From f8e67c4d0eba90375cbe10bf7c922faa816e547b Mon Sep 17 00:00:00 2001 From: Alexey Lapshin Date: Fri, 16 Jun 2023 11:37:11 +0200 Subject: [PATCH] Revert "[DWARFLinker] Handle DW_OP_GNU_push_tls_address while check for variable location." This reverts commit e89738451a3830d80fcf23554fd0b297bca60266. --- llvm/lib/DWARFLinker/DWARFLinker.cpp | 8 +- llvm/test/tools/dsymutil/X86/tls-variable.test | 193 ------------------------- 2 files changed, 2 insertions(+), 199 deletions(-) delete mode 100644 llvm/test/tools/dsymutil/X86/tls-variable.test diff --git a/llvm/lib/DWARFLinker/DWARFLinker.cpp b/llvm/lib/DWARFLinker/DWARFLinker.cpp index 619df44..7d02e05 100644 --- a/llvm/lib/DWARFLinker/DWARFLinker.cpp +++ b/llvm/lib/DWARFLinker/DWARFLinker.cpp @@ -420,11 +420,6 @@ void DWARFLinker::cleanupAuxiliarryData(LinkContext &Context) { DIEAlloc.Reset(); } -static bool isTlsAddressCode(uint8_t DW_OP_Code) { - return DW_OP_Code == dwarf::DW_OP_form_tls_address || - DW_OP_Code == dwarf::DW_OP_GNU_push_tls_address; -} - std::optional DWARFLinker::getVariableRelocAdjustment(AddressesMap &RelocMgr, const DWARFDie &DIE) { @@ -476,7 +471,8 @@ DWARFLinker::getVariableRelocAdjustment(AddressesMap &RelocMgr, case dwarf::DW_OP_const8u: case dwarf::DW_OP_const4s: case dwarf::DW_OP_const8s: - if (NextIt == Expression.end() || !isTlsAddressCode(NextIt->getCode())) + if (NextIt == Expression.end() || + NextIt->getCode() != dwarf::DW_OP_form_tls_address) break; [[fallthrough]]; case dwarf::DW_OP_addr: { diff --git a/llvm/test/tools/dsymutil/X86/tls-variable.test b/llvm/test/tools/dsymutil/X86/tls-variable.test deleted file mode 100644 index 6aabcfe..0000000 --- a/llvm/test/tools/dsymutil/X86/tls-variable.test +++ /dev/null @@ -1,193 +0,0 @@ -## This test checks that thread local storage variables -## are preserved. - -# RUN: yaml2obj %s -o %t.o -# RUN: echo '---' > %t2.map -# RUN: echo "triple: 'x86_64-apple-darwin'" >> %t2.map -# RUN: echo 'objects:' >> %t2.map -# RUN: echo " - filename: '%t.o'" >> %t2.map -# RUN: echo ' symbols:' >> %t2.map -# RUN: echo ' - { sym: __Z3foov, objAddr: 0x0, binAddr: 0x10000, size: 0x10 }' >> %t2.map -# RUN: echo '...' >> %t2.map -# RUN: dsymutil -y %t2.map --keep-function-for-static -f -o - | llvm-dwarfdump -a - | FileCheck %s - -# CHECK: file format Mach-O 64-bit x86-64 -# CHECK: .debug_info contents: -# CHECK: Compile Unit: -# CHECK: DW_TAG_compile_unit -# CHECK: DW_AT_name{{.*}}"CU1" -# CHECK: DW_TAG_subprogram -# CHECK: DW_AT_name{{.*}}"foo" -# CHECK: DW_TAG_variable -# CHECK: DW_AT_name{{.*}}"var1" -# CHECK: DW_AT_location (DW_OP_const8u 0x10001, DW_OP_GNU_push_tls_address) -# CHECK: DW_AT_name{{.*}}"var2" -# CHECK: DW_AT_location (DW_OP_const8u 0x10001, DW_OP_form_tls_address) - ---- !mach-o -FileHeader: - magic: 0xFEEDFACF - cputype: 0x01000007 - cpusubtype: 0x00000003 - filetype: 0x00000001 - ncmds: 2 - sizeofcmds: 376 - flags: 0x00002000 - reserved: 0x00000000 -LoadCommands: - - cmd: LC_SEGMENT_64 - cmdsize: 232 - segname: '' - vmaddr: 0x00 - vmsize: 0x300 - fileoff: 0x300 - filesize: 0x300 - maxprot: 7 - initprot: 7 - nsects: 2 - flags: 0 - Sections: - - sectname: __debug_abbrev - segname: __DWARF - addr: 0x000000000000000F - size: 0x27 - offset: 0x00000380 - align: 0 - reloff: 0x00000000 - nreloc: 0 - flags: 0x02000000 - reserved1: 0x00000000 - reserved2: 0x00000000 - reserved3: 0x00000000 - - sectname: __debug_info - segname: __DWARF - addr: 0x000000000000100 - size: 0x54 - offset: 0x00000410 - align: 0 - reloff: 0x00000600 - nreloc: 2 - flags: 0x02000000 - reserved1: 0x00000000 - reserved2: 0x00000000 - reserved3: 0x00000000 - relocations: - - address: 0x32 - symbolnum: 1 - pcrel: true - length: 3 - extern: true - type: 0 - scattered: false - value: 0 - - address: 0x47 - symbolnum: 1 - pcrel: true - length: 3 - extern: true - type: 0 - scattered: false - value: 0 - - cmd: LC_SYMTAB - cmdsize: 24 - symoff: 0x700 - nsyms: 2 - stroff: 0x720 - strsize: 10 -LinkEditData: - NameList: - - n_strx: 1 - n_type: 0x0F - n_sect: 1 - n_desc: 0 - n_value: 0 - - n_strx: 1 - n_type: 0x0F - n_sect: 1 - n_desc: 0 - n_value: 0 - StringTable: - - '' - - '__Z3foov' - - '' -DWARF: - debug_abbrev: - - Table: - - Tag: DW_TAG_compile_unit - Children: DW_CHILDREN_yes - Attributes: - - Attribute: DW_AT_producer - Form: DW_FORM_string - - Attribute: DW_AT_language - Form: DW_FORM_data2 - - Attribute: DW_AT_name - Form: DW_FORM_string - - Tag: DW_TAG_subprogram - Children: DW_CHILDREN_yes - Attributes: - - Attribute: DW_AT_name - Form: DW_FORM_string - - Attribute: DW_AT_type - Form: DW_FORM_ref4 - - Tag: DW_TAG_variable - Children: DW_CHILDREN_no - Attributes: - - Attribute: DW_AT_name - Form: DW_FORM_string - - Attribute: DW_AT_type - Form: DW_FORM_ref4 - - Attribute: DW_AT_location - Form: DW_FORM_exprloc - - Tag: DW_TAG_base_type - Children: DW_CHILDREN_no - Attributes: - - Attribute: DW_AT_name - Form: DW_FORM_string - debug_info: - - Version: 4 - Entries: - - AbbrCode: 1 - Values: - - CStr: by_hand - - Value: 0x04 - - CStr: CU1 - - AbbrCode: 4 - Values: - - CStr: int - - AbbrCode: 2 - Values: - - CStr: foo - - Value: 0x1a - - AbbrCode: 3 - Values: - - CStr: var1 - - Value: 0x0000001a - - BlockData: - - 0x0e - - 0x00 - - 0x00 - - 0x01 - - 0x00 - - 0x00 - - 0x00 - - 0x00 - - 0x00 - - 0xe0 - - AbbrCode: 3 - Values: - - CStr: var2 - - Value: 0x0000001a - - BlockData: - - 0x0e - - 0x00 - - 0x00 - - 0x01 - - 0x00 - - 0x00 - - 0x00 - - 0x00 - - 0x00 - - 0x9b - - AbbrCode: 0 - - AbbrCode: 0 -... -- 2.7.4