aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Harmstone <mark@harmstone.com>2024-07-13 15:36:34 +0100
committerMark Harmstone <mark@harmstone.com>2024-07-20 22:08:06 +0100
commit11c9c34be6c361622ddef854257cf3885c2df963 (patch)
tree374162583b162430d7f044464076f0c529baf869
parente1b9d58e85ec5e3f73d1d48e67411386f1ac275c (diff)
downloadbinutils-11c9c34be6c361622ddef854257cf3885c2df963.zip
binutils-11c9c34be6c361622ddef854257cf3885c2df963.tar.gz
binutils-11c9c34be6c361622ddef854257cf3885c2df963.tar.bz2
ld/PDB: use correct hashing algorithm in add_globals_ref
add_globals_ref was hashing using CRC32 rather than the hashing algorithm used for symbols, which meant that windbg was unable to put breakpoints against unmangled names.
-rw-r--r--ld/pdb.c2
-rw-r--r--ld/testsuite/ld-pe/pdb-syms1-globals.d73
2 files changed, 37 insertions, 38 deletions
diff --git a/ld/pdb.c b/ld/pdb.c
index 88639d5..7a08ae3 100644
--- a/ld/pdb.c
+++ b/ld/pdb.c
@@ -872,7 +872,7 @@ add_globals_ref (struct globals *glob, bfd *sym_rec_stream, const char *name,
*slot = xmalloc (offsetof (struct global, data) + len);
- hash = crc32 ((const uint8_t *) name, name_len);
+ hash = calc_hash (name, name_len);
hash %= NUM_GLOBALS_HASH_BUCKETS;
g = *slot;
diff --git a/ld/testsuite/ld-pe/pdb-syms1-globals.d b/ld/testsuite/ld-pe/pdb-syms1-globals.d
index 356c5de..450f3a2 100644
--- a/ld/testsuite/ld-pe/pdb-syms1-globals.d
+++ b/ld/testsuite/ld-pe/pdb-syms1-globals.d
@@ -2,20 +2,20 @@
*: file format binary
Contents of section .data:
- 0000 ffffffff 1a092ff1 d0000000 64020000 ....../.....d...
- 0010 fd000000 01000000 35010000 01000000 ........5.......
- 0020 15000000 01000000 19010000 01000000 ................
- 0030 c1000000 01000000 b9010000 01000000 ................
- 0040 d5000000 01000000 61010000 01000000 ........a.......
- 0050 e9000000 01000000 11020000 01000000 ................
- 0060 e9010000 01000000 d5010000 01000000 ................
- 0070 49010000 01000000 a5010000 01000000 I...............
- 0080 99010000 01000000 85000000 01000000 ................
- 0090 01000000 01000000 99000000 01000000 ................
- 00a0 7d010000 01000000 ad000000 01000000 }...............
- 00b0 5d000000 01000000 49000000 01000000 ].......I.......
- 00c0 21000000 02000000 35000000 01000000 !.......5.......
- 00d0 fd010000 01000000 71000000 01000000 ........q.......
+ 0000 ffffffff 1a092ff1 d0000000 60020000 ....../.....`...
+ 0010 15000000 01000000 b9010000 01000000 ................
+ 0020 a5010000 01000000 fd000000 01000000 ................
+ 0030 11020000 01000000 71000000 01000000 ........q.......
+ 0040 fd010000 01000000 5d000000 01000000 ........].......
+ 0050 d5010000 01000000 e9010000 01000000 ................
+ 0060 21000000 02000000 35000000 01000000 !.......5.......
+ 0070 49000000 01000000 7d010000 01000000 I.......}.......
+ 0080 99010000 01000000 19010000 01000000 ................
+ 0090 35010000 01000000 d5000000 01000000 5...............
+ 00a0 c1000000 01000000 e9000000 01000000 ................
+ 00b0 85000000 01000000 ad000000 01000000 ................
+ 00c0 49010000 01000000 01000000 01000000 I...............
+ 00d0 99000000 01000000 61010000 01000000 ........a.......
00e0 00000000 00000000 00000000 00000000 ................
00f0 00000000 00000000 00000000 00000000 ................
0100 00000000 00000000 00000000 00000000 ................
@@ -23,35 +23,34 @@ Contents of section .data:
0120 00000000 00000000 00000000 00000000 ................
0130 00000000 00000000 00000000 00000000 ................
0140 00000000 00000000 00000000 00000000 ................
- 0150 00000002 00000000 00000000 00000000 ................
+ 0150 00000000 00000000 00000000 00000000 ................
0160 00000000 00000000 00000000 00000000 ................
- 0170 00000000 00020000 00000000 00000000 ................
- 0180 00000000 00000000 00000000 00000000 ................
- 0190 00000000 00000001 00000000 00000000 ................
- 01a0 00000000 00000000 00000000 00000000 ................
+ 0170 00000000 00000000 00000000 00000000 ................
+ 0180 00000001 00100040 00000000 00000000 .......@........
+ 0190 00000000 00000000 00000000 00000000 ................
+ 01a0 00000004 00000000 00000000 00000000 ................
01b0 00000000 00000000 00000000 00000000 ................
01c0 00000000 00000000 00000000 00000000 ................
01d0 00000000 00000000 00000000 00000000 ................
- 01e0 08001000 00000000 00000000 00000040 ...............@
- 01f0 04002000 00000000 00000000 00000000 .. .............
- 0200 00000000 00000001 00000000 00000000 ................
+ 01e0 00000000 0000b499 00000000 00000000 ................
+ 01f0 00000000 00000000 00000000 00000000 ................
+ 0200 00000000 00000000 00000000 00000000 ................
0210 00000000 00000000 00000000 00000000 ................
0220 00000000 00000000 00000000 00000000 ................
- 0230 00000000 00000000 00080000 00004000 ..............@.
- 0240 00000000 00000000 00100010 00000000 ................
- 0250 40000000 00000000 00000000 00000000 @...............
- 0260 00000000 00000800 00000000 00000000 ................
- 0270 00000008 00000000 00000000 00000000 ................
- 0280 00000000 02004000 00000000 00000000 ......@.........
- 0290 00000000 00008000 00000000 00000000 ................
- 02a0 00000000 00000000 10000000 00000000 ................
- 02b0 00000000 00000000 00000000 00800000 ................
- 02c0 00000000 00000000 00002000 00010000 .......... .....
- 02d0 00000000 00000000 00000000 00000040 ...............@
+ 0230 00000001 00000000 00000000 00000000 ................
+ 0240 01000000 00000000 00000000 00000000 ................
+ 0250 00000000 00000000 00000000 00000000 ................
+ 0260 00000000 00000000 00000000 00000000 ................
+ 0270 00000001 00000000 00000000 10db0000 ................
+ 0280 00000000 00000000 00000000 00000000 ................
+ 0290 00000001 00000000 00000000 00000000 ................
+ 02a0 00000000 00000000 00000000 00000000 ................
+ 02b0 00000000 00000000 00000000 00000000 ................
+ 02c0 00000000 00000000 00000000 00000000 ................
+ 02d0 00000000 00000000 00000000 00000000 ................
02e0 00000000 00000000 0c000000 18000000 ................
02f0 24000000 30000000 3c000000 48000000 $...0...<...H...
0300 54000000 60000000 6c000000 78000000 T...`...l...x...
- 0310 84000000 90000000 9c000000 a8000000 ................
- 0320 b4000000 c0000000 d8000000 e4000000 ................
- 0330 f0000000 fc000000 08010000 20010000 ............ ...
- 0340 2c010000 ,... \ No newline at end of file
+ 0310 90000000 9c000000 a8000000 b4000000 ................
+ 0320 c0000000 cc000000 d8000000 e4000000 ................
+ 0330 f0000000 fc000000 14010000 2c010000 ............,... \ No newline at end of file