Index: ELF/Config.h =================================================================== --- ELF/Config.h +++ ELF/Config.h @@ -52,14 +52,14 @@ bool EnableNewDtags; bool ExportDynamic; bool GcSections; - bool GnuHash = false; + bool GnuHash = true; bool Mips64EL = false; bool NoInhibitExec; bool NoUndefined; bool Shared; bool Static = false; bool StripAll; - bool SysvHash = true; + bool SysvHash = false; bool Verbose; bool ZNodelete = false; bool ZNow = false; Index: ELF/Driver.cpp =================================================================== --- ELF/Driver.cpp +++ ELF/Driver.cpp @@ -166,12 +166,12 @@ if (auto *Arg = Args.getLastArg(OPT_hash_style)) { StringRef S = Arg->getValue(); - if (S == "gnu") { - Config->GnuHash = true; - Config->SysvHash = false; + if (S == "sysv") { + Config->GnuHash = false; + Config->SysvHash = true; } else if (S == "both") { - Config->GnuHash = true; - } else if (S != "sysv") + Config->SysvHash = true; + } else if (S != "gnu") error("Unknown hash style: " + S); } Index: test/elf2/discard-none.s =================================================================== --- test/elf2/discard-none.s +++ test/elf2/discard-none.s @@ -36,7 +36,7 @@ // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: .Lmyothervar -// CHECK-NEXT: Value: 0x14C +// CHECK-NEXT: Value: 0x154 // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None @@ -45,7 +45,7 @@ // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: .Lmyvar -// CHECK-NEXT: Value: 0x14C +// CHECK-NEXT: Value: 0x154 // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None Index: test/elf2/dynamic-reloc.s =================================================================== --- test/elf2/dynamic-reloc.s +++ test/elf2/dynamic-reloc.s @@ -50,7 +50,7 @@ // CHECK-NEXT: 0x000000000000000B SYMENT 24 (bytes) // CHECK-NEXT: 0x0000000000000005 STRTAB // CHECK-NEXT: 0x000000000000000A STRSZ -// CHECK-NEXT: 0x0000000000000004 HASH +// CHECK-NEXT: 0x000000006FFFFEF5 GNU_HASH // CHECK-NEXT: 0x0000000000000001 NEEDED SharedLibrary ({{.*}}2.so) // CHECK-NEXT: 0x0000000000000000 NULL 0x0 // CHECK-NEXT: ] Index: test/elf2/local-dynamic.s =================================================================== --- test/elf2/local-dynamic.s +++ test/elf2/local-dynamic.s @@ -16,7 +16,7 @@ // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: blah -// CHECK-NEXT: Value: 0x170 +// CHECK-NEXT: Value: 0x178 // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None @@ -25,7 +25,7 @@ // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: foo -// CHECK-NEXT: Value: 0x170 +// CHECK-NEXT: Value: 0x178 // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None @@ -34,7 +34,7 @@ // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: goo -// CHECK-NEXT: Value: 0x170 +// CHECK-NEXT: Value: 0x178 // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None @@ -43,7 +43,7 @@ // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: _start -// CHECK-NEXT: Value: 0x170 +// CHECK-NEXT: Value: 0x178 // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Global // CHECK-NEXT: Type: None @@ -64,7 +64,7 @@ // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: _start@ -// CHECK-NEXT: Value: 0x170 +// CHECK-NEXT: Value: 0x178 // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Global // CHECK-NEXT: Type: None Index: test/elf2/shared.s =================================================================== --- test/elf2/shared.s +++ test/elf2/shared.s @@ -61,8 +61,8 @@ // CHECK-NEXT: } // CHECK-NEXT: Section { // CHECK-NEXT: Index: 3 -// CHECK-NEXT: Name: .hash -// CHECK-NEXT: Type: SHT_HASH +// CHECK-NEXT: Name: .gnu.hash +// CHECK-NEXT: Type: SHT_GNU_HASH // CHECK-NEXT: Flags [ // CHECK-NEXT: SHF_ALLOC // CHECK-NEXT: ] @@ -183,22 +183,22 @@ // CHECK-NEXT: Section: Undefined // CHECK-NEXT: } // CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: _start@ -// CHECK-NEXT: Value: 0x11000 +// CHECK-NEXT: Name: bar@ +// CHECK-NEXT: Value: 0x0 // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: Non +// CHECK-NEXT: Type: Function // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text +// CHECK-NEXT: Section: Undefined // CHECK-NEXT: } // CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: bar@ -// CHECK-NEXT: Value: 0x0 +// CHECK-NEXT: Name: _start@ +// CHECK-NEXT: Value: 0x11000 // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: Function +// CHECK-NEXT: Type: Non // CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: Undefined +// CHECK-NEXT: Section: .text // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: zed@ @@ -250,7 +250,7 @@ // CHECK-NEXT: 0x0000000B SYMENT [[SYMENT]] (bytes) // CHECK-NEXT: 0x00000005 STRTAB [[DYNSTRADDR]] // CHECK-NEXT: 0x0000000A STRSZ -// CHECK-NEXT: 0x00000004 HASH [[HASHADDR]] +// CHECK-NEXT: 0x6FFFFEF5 GNU_HASH [[HASHADDR]] // CHECK-NEXT: 0x0000001D RUNPATH foo:bar // CHECK-NEXT: 0x00000001 NEEDED SharedLibrary ({{.*}}2.so) // CHECK-NEXT: 0x00000000 NULL 0x0 @@ -281,13 +281,6 @@ // CHECK-NEXT: Alignment: [[ALIGN]] // CHECK-NEXT: } -// CHECK: HashTable { -// CHECK-NEXT: Num Buckets: 4 -// CHECK-NEXT: Num Chains: 4 -// CHECK-NEXT: Buckets: [3, 0, 2, 0] -// CHECK-NEXT: Chains: [0, 0, 0, 1] -// CHECK-NEXT: } - .global _start _start: .long bar