From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from barracuda.ebox.ca (barracuda.ebox.ca [96.127.255.19]) by sourceware.org (Postfix) with ESMTPS id 196333858D28 for ; Thu, 18 Aug 2022 18:37:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 196333858D28 X-ASG-Debug-ID: 1660847866-0c856e6b0389d000001-fS2M51 Received: from smtp.ebox.ca (smtp.ebox.ca [96.127.255.82]) by barracuda.ebox.ca with ESMTP id 90EzERVqB2RBzt7d (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO); Thu, 18 Aug 2022 14:37:46 -0400 (EDT) X-Barracuda-Envelope-From: simon.marchi@efficios.com X-Barracuda-RBL-Trusted-Forwarder: 96.127.255.82 Received: from epycamd.internal.efficios.com (192-222-180-24.qc.cable.ebox.net [192.222.180.24]) by smtp.ebox.ca (Postfix) with ESMTP id 0628C441B21; Thu, 18 Aug 2022 14:37:46 -0400 (EDT) From: Simon Marchi X-Barracuda-RBL-IP: 192.222.180.24 X-Barracuda-Effective-Source-IP: 192-222-180-24.qc.cable.ebox.net[192.222.180.24] X-Barracuda-Apparent-Source-IP: 192.222.180.24 To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH] gdb/testsuite: re-compile entry-value-typedef .S files with -fPIE Date: Thu, 18 Aug 2022 14:37:45 -0400 X-ASG-Orig-Subj: [PATCH] gdb/testsuite: re-compile entry-value-typedef .S files with -fPIE Message-Id: <20220818183745.1641260-1-simon.marchi@efficios.com> X-Mailer: git-send-email 2.37.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: smtp.ebox.ca[96.127.255.82] X-Barracuda-Start-Time: 1660847866 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: https://96.127.255.19:443/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at ebox.ca X-Barracuda-Scan-Msg-Size: 8849 X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.50 X-Barracuda-Spam-Status: No, SCORE=0.50 using global scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=5.0 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.100167 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M X-Spam-Status: No, score=-3498.6 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_NONE, KAM_DMARC_STATUS, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_SOFTFAIL, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Aug 2022 18:37:50 -0000 As Luis pointed out here [1], the AArch64 variant of the test doesn't work on systems that use PIE by default. For example, on this Debian 11: $ make check TESTS="gdb.dwarf2/entry-value-typedef.exp" gdb compile failed, /usr/bin/ld: /tmp/ccJE8ZSr.o: relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZNSsD1Ev@@GLIBCXX_3.4' which may bind externally can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: /tmp/ccJE8ZSr.o(.text+0x38): unresolvable R_AARCH64_ADR_PREL_PG_HI21 relocation against symbol `_ZNSsD1Ev@@GLIBCXX_3.4' This is because entry-value-typedef-aarch64.S was generated on an old system that does not generate position-independent code by default, but the system the test runs on tries to link the test executable as position-independent. Fix this by regenerating the same binary on the same system as the original one, but with -fPIE this time. Do the same for the amd64 binary, although this one was already position-independent so the generated code doesn't change. With this patch applied, the test passes on the Debian 11 AArch64 system. [1] https://sourceware.org/pipermail/gdb-patches/2022-August/191462.html Change-Id: I68d55adaa56a7a3eddb0c13980b1a98b791f8144 --- .../gdb.dwarf2/entry-value-typedef-aarch64.S | 112 ++++++++++-------- .../gdb.dwarf2/entry-value-typedef-amd64.S | 6 +- 2 files changed, 64 insertions(+), 54 deletions(-) diff --git a/gdb/testsuite/gdb.dwarf2/entry-value-typedef-aarch64.S b/gdb/testsuite/gdb.dwarf2/entry-value-typedef-aarch64.S index a6d134f656d..f0f0b932b76 100644 --- a/gdb/testsuite/gdb.dwarf2/entry-value-typedef-aarch64.S +++ b/gdb/testsuite/gdb.dwarf2/entry-value-typedef-aarch64.S @@ -47,7 +47,8 @@ _ZL4funcRKi: .cfi_offset 20, -360 .LBB293: .loc 1 28 0 - add x0, x29, 32 + add x20, x29, 32 + mov x0, x20 .LVL1: mov w1, 16 .LEHB0: @@ -65,7 +66,7 @@ _ZL4funcRKi: .file 2 "/usr/include/c++/4.8/sstream" .loc 2 472 0 mov x8, x0 - add x0, x29, 40 + add x0, x20, 8 .LEHB1: bl _ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv .LEHE1: @@ -74,33 +75,37 @@ _ZL4funcRKi: .LBE294: .loc 1 29 0 discriminator 1 mov x0, x19 - ldr x1, .LC0 - adrp x2, _ZNSsD1Ev - add x2, x2, :lo12:_ZNSsD1Ev + adrp x1, :got:_ZTISs + ldr x1, [x1, #:got_lo12:_ZTISs] + adrp x2, :got:_ZNSsD1Ev + ldr x2, [x2, #:got_lo12:_ZNSsD1Ev] .LEHB2: bl __cxa_throw .LEHE2: .LVL6: .L4: mov x20, x0 +.LVL7: .loc 1 29 0 is_stmt 0 mov x0, x19 bl __cxa_free_exception -.LVL7: +.LVL8: mov x19, x20 b .L3 +.LVL9: .L5: mov x19, x0 +.LVL10: .L3: add x0, x29, 32 -.LVL8: +.LVL11: bl _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev -.LVL9: +.LVL12: mov x0, x19 .LEHB3: bl _Unwind_Resume .LEHE3: -.LVL10: +.LVL13: .LBE293: .cfi_endproc .LFE1299: @@ -131,9 +136,6 @@ _ZL4funcRKi: .LLSDACSE1299: .text .size _ZL4funcRKi, .-_ZL4funcRKi - .align 3 -.LC0: - .xword _ZTISs .align 2 .global main .type main, %function @@ -152,12 +154,12 @@ main: mov w1, 1234 str w1, [x0,-4]! bl _ZL4funcRKi -.LVL11: +.LVL14: .cfi_endproc .LFE1300: .size main, .-main .weak _ZTISs - .section .rodata._ZTISs,"aG",%progbits,_ZTISs,comdat + .section .data.rel.ro._ZTISs,"awG",%progbits,_ZTISs,comdat .align 3 .type _ZTISs, %object .size _ZTISs, 16 @@ -224,7 +226,7 @@ _ZTSSs: .file 51 "/usr/include/aarch64-linux-gnu/c++/4.8/bits/gthr-default.h" .section .debug_info,"",%progbits .Ldebug_info0: - .4byte 0x51c9 + .4byte 0x51bc .2byte 0x4 .4byte .Ldebug_abbrev0 .byte 0x8 @@ -5042,7 +5044,7 @@ _ZTSSs: .4byte 0x2be0 .4byte 0x2be6 .uleb128 0x18 - .4byte 0x5178 + .4byte 0x516b .byte 0 .uleb128 0x2b .4byte .LASF458 @@ -8958,17 +8960,17 @@ _ZTSSs: .8byte .LFE1299-.LFB1299 .uleb128 0x1 .byte 0x9c - .4byte 0x507d + .4byte 0x5070 .uleb128 0x73 .string "t" .byte 0x1 .byte 0x1a - .4byte 0x507d + .4byte 0x5070 .4byte .LLST0 .uleb128 0x74 .8byte .LBB293 .8byte .LBE293-.LBB293 - .4byte 0x5068 + .4byte 0x505b .uleb128 0x75 .string "oss" .byte 0x1 @@ -8994,8 +8996,8 @@ _ZTSSs: .uleb128 0x1 .byte 0x50 .uleb128 0x2 - .byte 0x8f - .sleb128 40 + .byte 0x84 + .sleb128 8 .byte 0 .byte 0 .uleb128 0x7a @@ -9010,12 +9012,12 @@ _ZTSSs: .uleb128 0x1 .byte 0x50 .uleb128 0x2 - .byte 0x8f - .sleb128 32 + .byte 0x84 + .sleb128 0 .byte 0 .uleb128 0x7b .8byte .LVL3 - .4byte 0x517e + .4byte 0x5171 .4byte 0x501a .uleb128 0x79 .uleb128 0x1 @@ -9025,14 +9027,8 @@ _ZTSSs: .byte 0 .uleb128 0x7b .8byte .LVL6 - .4byte 0x5192 - .4byte 0x503f - .uleb128 0x79 - .uleb128 0x1 - .byte 0x51 - .uleb128 0x9 - .byte 0x3 - .8byte _ZTISs + .4byte 0x5185 + .4byte 0x5032 .uleb128 0x79 .uleb128 0x1 .byte 0x50 @@ -9041,9 +9037,9 @@ _ZTSSs: .sleb128 0 .byte 0 .uleb128 0x7b - .8byte .LVL7 - .4byte 0x51ac - .4byte 0x5057 + .8byte .LVL8 + .4byte 0x519f + .4byte 0x504a .uleb128 0x79 .uleb128 0x1 .byte 0x50 @@ -9052,7 +9048,7 @@ _ZTSSs: .sleb128 0 .byte 0 .uleb128 0x7c - .8byte .LVL9 + .8byte .LVL12 .uleb128 0x79 .uleb128 0x1 .byte 0x50 @@ -9062,8 +9058,8 @@ _ZTSSs: .byte 0 .byte 0 .uleb128 0x78 - .8byte .LVL10 - .4byte 0x51bc + .8byte .LVL13 + .4byte 0x51af .uleb128 0x79 .uleb128 0x1 .byte 0x50 @@ -9073,10 +9069,10 @@ _ZTSSs: .byte 0 .byte 0 .uleb128 0x10 - .4byte 0x5082 + .4byte 0x5075 .uleb128 0x55 .byte 0x8 - .4byte 0x5088 + .4byte 0x507b .uleb128 0x10 .4byte 0x4872 .uleb128 0x7d @@ -9088,9 +9084,9 @@ _ZTSSs: .8byte .LFE1300-.LFB1300 .uleb128 0x1 .byte 0x9c - .4byte 0x50c7 + .4byte 0x50ba .uleb128 0x78 - .8byte .LVL11 + .8byte .LVL14 .4byte 0x4f63 .uleb128 0x7e .uleb128 0x1 @@ -9165,13 +9161,13 @@ _ZTSSs: .uleb128 0x86 .4byte .LASF799 .4byte 0x20d - .4byte 0x5192 + .4byte 0x5185 .uleb128 0x19 .4byte 0x221 .byte 0 .uleb128 0x87 .4byte .LASF801 - .4byte 0x51ac + .4byte 0x519f .uleb128 0x19 .4byte 0x20d .uleb128 0x19 @@ -9181,7 +9177,7 @@ _ZTSSs: .byte 0 .uleb128 0x87 .4byte .LASF802 - .4byte 0x51bc + .4byte 0x51af .uleb128 0x19 .4byte 0x20d .byte 0 @@ -11207,16 +11203,30 @@ _ZTSSs: .8byte 0 .LLST1: .8byte .LVL4-.Ltext0 - .8byte .LVL8-.Ltext0 + .8byte .LVL7-.Ltext0 + .2byte 0x1 + .byte 0x64 + .8byte .LVL7-.Ltext0 + .8byte .LVL9-.Ltext0 .2byte 0x3 .byte 0x8f .sleb128 32 .byte 0x9f - .8byte .LVL8-.Ltext0 - .8byte .LVL9-1-.Ltext0 + .8byte .LVL9-.Ltext0 + .8byte .LVL10-.Ltext0 + .2byte 0x1 + .byte 0x64 + .8byte .LVL10-.Ltext0 + .8byte .LVL11-.Ltext0 + .2byte 0x3 + .byte 0x8f + .sleb128 32 + .byte 0x9f + .8byte .LVL11-.Ltext0 + .8byte .LVL12-1-.Ltext0 .2byte 0x1 .byte 0x50 - .8byte .LVL9-1-.Ltext0 + .8byte .LVL12-1-.Ltext0 .8byte .LFE1299-.Ltext0 .2byte 0x3 .byte 0x8f @@ -11377,8 +11387,6 @@ _ZTSSs: .string "tm_isdst" .LASF654: .string "grouping" -.LASF804: - .string "GNU C++ 4.8.4 -g -O1 -std=c++11 -fstack-protector" .LASF20: .string "_lock" .LASF107: @@ -12523,6 +12531,8 @@ _ZTSSs: .string "_ZNKSs17find_first_not_ofERKSsm" .LASF30: .string "__FILE" +.LASF804: + .string "GNU C++ 4.8.4 -g -O1 -std=c++11 -fPIE -fstack-protector" .LASF247: .string "_ZNSspLESt16initializer_listIcE" .LASF587: diff --git a/gdb/testsuite/gdb.dwarf2/entry-value-typedef-amd64.S b/gdb/testsuite/gdb.dwarf2/entry-value-typedef-amd64.S index 1d86941ff1b..22fad8684d2 100644 --- a/gdb/testsuite/gdb.dwarf2/entry-value-typedef-amd64.S +++ b/gdb/testsuite/gdb.dwarf2/entry-value-typedef-amd64.S @@ -19,7 +19,7 @@ $ g++ --version g++ (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0 - $ g++ entry-value-typedef.cpp -O1 -S -g -o entry-value-typedef-amd64.S + $ g++ entry-value-typedef.cpp -O1 -fPIE -S -g -o entry-value-typedef-amd64.S */ .file "entry-value-typedef.cpp" @@ -13647,8 +13647,6 @@ _ZTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE: .section .debug_str,"MS",@progbits,1 .LASF739: .string "int_p_sep_by_space" -.LASF920: - .string "GNU C++14 9.4.0 -mtune=generic -march=x86-64 -g -O1 -fasynchronous-unwind-tables -fstack-protector-strong -fstack-clash-protection -fcf-protection" .LASF547: .string "char" .LASF487: @@ -15399,6 +15397,8 @@ _ZTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE: .string "__int_least8_t" .LASF495: .string "base" +.LASF920: + .string "GNU C++14 9.4.0 -mtune=generic -march=x86-64 -g -O1 -fPIE -fasynchronous-unwind-tables -fstack-protector-strong -fstack-clash-protection -fcf-protection" .LASF17: .string "const_pointer" .LASF764: -- 2.37.1