ld incorrect behaviour (broken?)

From: Aurelien Nephtali <aurelien.nephtali_at_wanadoo.fr>
Date: Mon, 11 Oct 2004 00:19:44 +0200
Hi,

I've noticed that the behaviour of 'ld' has changed from v 2.12.1 (included in
FreeBSD 4.10-PRERELEASE) and the v 2.15 actually used:

nebula% cat tmp.c
#include <stdlib.h>

int     main(void)
{
  malloc(2);
  return (0);
}

Using ld 2.12.1
---------------

nebula% gcc -o tmp tmp.c
nebula% readelf -a tmp | grep malloc
080496f0  00000207 R_386_JUMP_SLOT   080483bc   malloc
     2: 080483bc    41 FUNC    GLOBAL DEFAULT  UND malloc
    52: 080483bc    41 FUNC    GLOBAL DEFAULT  UND malloc

Using ld 2.15
-------------
nebula% gcc -o tmp tmp.c
nebula% readelf -a tmp | grep malloc
080496f0  00000207 R_386_JUMP_SLOT   00000000   malloc
     2: 00000000    41 FUNC    GLOBAL DEFAULT  UND malloc
    52: 00000000    41 FUNC    GLOBAL DEFAULT  UND malloc

The address '080483bc' is now '0' and that breaks all of my tools that need to
use this field.
Is there a reason for that field to be '0' now ?

Thanks.

-- 
NEPHTALI 'dak' Aurelien
Received on Sun Oct 10 2004 - 20:19:49 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:16 UTC