mailing list of musl libc
 help / color / mirror / Atom feed
* [musl] [PATCH] crt: Add .file directive
@ 2020-10-30 18:44 Khem Raj
  2020-10-30 18:50 ` Rich Felker
  0 siblings, 1 reply; 3+ messages in thread
From: Khem Raj @ 2020-10-30 18:44 UTC (permalink / raw)
  To: musl; +Cc: Khem Raj

Musl linked binaries come out to be not reproducible because
absolute build path is seen in debug info of crti.o and crtn.o
This is due to the fact that these objects are built from assembly
source files and they are missing .file directive
if we add .file <filename>.s in them then debug info encodes this
value instead of absolute path in debug_line section

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 crt/aarch64/crti.s    | 1 +
 crt/aarch64/crtn.s    | 1 +
 crt/arm/crti.s        | 1 +
 crt/arm/crtn.s        | 1 +
 crt/i386/crti.s       | 1 +
 crt/i386/crtn.s       | 1 +
 crt/microblaze/crti.s | 1 +
 crt/microblaze/crtn.s | 1 +
 crt/mips/crti.s       | 1 +
 crt/mips/crtn.s       | 1 +
 crt/mips64/crti.s     | 1 +
 crt/mips64/crtn.s     | 1 +
 crt/mipsn32/crti.s    | 1 +
 crt/mipsn32/crtn.s    | 1 +
 crt/or1k/crti.s       | 1 +
 crt/or1k/crtn.s       | 1 +
 crt/powerpc/crti.s    | 1 +
 crt/powerpc/crtn.s    | 1 +
 crt/powerpc64/crti.s  | 1 +
 crt/powerpc64/crtn.s  | 1 +
 crt/s390x/crti.s      | 1 +
 crt/s390x/crtn.s      | 1 +
 crt/sh/crti.s         | 1 +
 crt/sh/crtn.s         | 1 +
 crt/x32/crti.s        | 1 +
 crt/x32/crtn.s        | 1 +
 crt/x86_64/crti.s     | 1 +
 crt/x86_64/crtn.s     | 1 +
 28 files changed, 28 insertions(+)

diff --git a/crt/aarch64/crti.s b/crt/aarch64/crti.s
index 775df0ac..0f7c23a9 100644
--- a/crt/aarch64/crti.s
+++ b/crt/aarch64/crti.s
@@ -1,3 +1,4 @@
+.file "crti.s"
 .section .init
 .global _init
 .type _init,%function
diff --git a/crt/aarch64/crtn.s b/crt/aarch64/crtn.s
index 73cab692..d62fc129 100644
--- a/crt/aarch64/crtn.s
+++ b/crt/aarch64/crtn.s
@@ -1,3 +1,4 @@
+.file "crtn.s"
 .section .init
 	ldp x29,x30,[sp],#16
 	ret
diff --git a/crt/arm/crti.s b/crt/arm/crti.s
index 18dc1e41..8df72979 100644
--- a/crt/arm/crti.s
+++ b/crt/arm/crti.s
@@ -1,3 +1,4 @@
+.file "crti.s"
 .syntax unified
 
 .section .init
diff --git a/crt/arm/crtn.s b/crt/arm/crtn.s
index dc020f92..7451355b 100644
--- a/crt/arm/crtn.s
+++ b/crt/arm/crtn.s
@@ -1,3 +1,4 @@
+.file "crtn.s"
 .syntax unified
 
 .section .init
diff --git a/crt/i386/crti.s b/crt/i386/crti.s
index d2682a20..2823fc3b 100644
--- a/crt/i386/crti.s
+++ b/crt/i386/crti.s
@@ -1,3 +1,4 @@
+.file "crti.s"
 .section .init
 .global _init
 _init:
diff --git a/crt/i386/crtn.s b/crt/i386/crtn.s
index f3b61e01..04fb1646 100644
--- a/crt/i386/crtn.s
+++ b/crt/i386/crtn.s
@@ -1,3 +1,4 @@
+.file "crtn.s"
 .section .init
 	add $12,%esp
 	ret
diff --git a/crt/microblaze/crti.s b/crt/microblaze/crti.s
index ed1c2fa4..29ee4733 100644
--- a/crt/microblaze/crti.s
+++ b/crt/microblaze/crti.s
@@ -1,3 +1,4 @@
+.file "crti.s"
 .section .init
 .global _init
 .align 2
diff --git a/crt/microblaze/crtn.s b/crt/microblaze/crtn.s
index 1e02c984..c2083749 100644
--- a/crt/microblaze/crtn.s
+++ b/crt/microblaze/crtn.s
@@ -1,3 +1,4 @@
+.file "crtn.s"
 .section .init
 	lwi r15, r1, 0
 	rtsd r15, 8
diff --git a/crt/mips/crti.s b/crt/mips/crti.s
index 39dee380..0211764e 100644
--- a/crt/mips/crti.s
+++ b/crt/mips/crti.s
@@ -1,3 +1,4 @@
+.file "crti.s"
 .set noreorder
 
 .section .init
diff --git a/crt/mips/crtn.s b/crt/mips/crtn.s
index 506a04b7..606490cf 100644
--- a/crt/mips/crtn.s
+++ b/crt/mips/crtn.s
@@ -1,3 +1,4 @@
+.file "crtn.s"
 .set noreorder
 
 .section .init
diff --git a/crt/mips64/crti.s b/crt/mips64/crti.s
index c962dd09..f2c19cdd 100644
--- a/crt/mips64/crti.s
+++ b/crt/mips64/crti.s
@@ -1,3 +1,4 @@
+.file "crti.s"
 .set noreorder
 
 .section .init
diff --git a/crt/mips64/crtn.s b/crt/mips64/crtn.s
index f3930b24..68903ffa 100644
--- a/crt/mips64/crtn.s
+++ b/crt/mips64/crtn.s
@@ -1,3 +1,4 @@
+.file "crtn.s"
 .set noreorder
 
 .section .init
diff --git a/crt/mipsn32/crti.s b/crt/mipsn32/crti.s
index 14fa28d9..a35387d3 100644
--- a/crt/mipsn32/crti.s
+++ b/crt/mipsn32/crti.s
@@ -1,3 +1,4 @@
+.file "crti.s"
 .set	noreorder
 .section	.init
 .global	_init
diff --git a/crt/mipsn32/crtn.s b/crt/mipsn32/crtn.s
index dccd7e89..bdb6e561 100644
--- a/crt/mipsn32/crtn.s
+++ b/crt/mipsn32/crtn.s
@@ -1,3 +1,4 @@
+.file "crtn.s"
 .set	noreorder
 .section	.init
 	ld	$gp, 16($sp)
diff --git a/crt/or1k/crti.s b/crt/or1k/crti.s
index 7e741459..919369ca 100644
--- a/crt/or1k/crti.s
+++ b/crt/or1k/crti.s
@@ -1,3 +1,4 @@
+.file "crti.s"
 .section .init
 .global _init
 _init:
diff --git a/crt/or1k/crtn.s b/crt/or1k/crtn.s
index 4185a027..d670b327 100644
--- a/crt/or1k/crtn.s
+++ b/crt/or1k/crtn.s
@@ -1,3 +1,4 @@
+.file "crtn.s"
 .section .init
 	l.lwz	r9,0(r1)
 	l.jr	r9
diff --git a/crt/powerpc/crti.s b/crt/powerpc/crti.s
index 60461ca4..b748ca48 100644
--- a/crt/powerpc/crti.s
+++ b/crt/powerpc/crti.s
@@ -1,3 +1,4 @@
+.file "crti.s"
 .section .init
 .align 2
 .global _init
diff --git a/crt/powerpc/crtn.s b/crt/powerpc/crtn.s
index 2d14a6f0..d989e36f 100644
--- a/crt/powerpc/crtn.s
+++ b/crt/powerpc/crtn.s
@@ -1,3 +1,4 @@
+.file "crtn.s"
 .section .init
 .align 2
 	lwz 0,36(1)
diff --git a/crt/powerpc64/crti.s b/crt/powerpc64/crti.s
index 9f712f0e..d3323a67 100644
--- a/crt/powerpc64/crti.s
+++ b/crt/powerpc64/crti.s
@@ -1,3 +1,4 @@
+.file "crti.s"
 .section .init
 .align 2
 .global _init
diff --git a/crt/powerpc64/crtn.s b/crt/powerpc64/crtn.s
index a7a9f4a0..5e71ae66 100644
--- a/crt/powerpc64/crtn.s
+++ b/crt/powerpc64/crtn.s
@@ -1,3 +1,4 @@
+.file "crtn.s"
 .section .init
 .align 2
 	addi 1, 1, 32
diff --git a/crt/s390x/crti.s b/crt/s390x/crti.s
index f453205b..3da3c5e1 100644
--- a/crt/s390x/crti.s
+++ b/crt/s390x/crti.s
@@ -1,3 +1,4 @@
+.file "crti.s"
 .section .init
 .align 2
 .global _init
diff --git a/crt/s390x/crtn.s b/crt/s390x/crtn.s
index 06066dc9..bfd55caf 100644
--- a/crt/s390x/crtn.s
+++ b/crt/s390x/crtn.s
@@ -1,3 +1,4 @@
+.file "crtn.s"
 .section .init
 .align 2
 	lmg  %r14, %r15, 272(%r15)
diff --git a/crt/sh/crti.s b/crt/sh/crti.s
index d99bfd5c..77d61c51 100644
--- a/crt/sh/crti.s
+++ b/crt/sh/crti.s
@@ -1,3 +1,4 @@
+.file "crti.s"
 .section .init
 .global  _init
 .type    _init, @function
diff --git a/crt/sh/crtn.s b/crt/sh/crtn.s
index 958ce951..29deb5be 100644
--- a/crt/sh/crtn.s
+++ b/crt/sh/crtn.s
@@ -1,3 +1,4 @@
+.file "crtn.s"
 .section .init
 	lds.l @r15+, pr
 	mov.l @r15+, r14
diff --git a/crt/x32/crti.s b/crt/x32/crti.s
index 4788968b..8668b7c7 100644
--- a/crt/x32/crti.s
+++ b/crt/x32/crti.s
@@ -1,3 +1,4 @@
+.file "crti.s"
 .section .init
 .global _init
 _init:
diff --git a/crt/x32/crtn.s b/crt/x32/crtn.s
index 29198b77..ef73d295 100644
--- a/crt/x32/crtn.s
+++ b/crt/x32/crtn.s
@@ -1,3 +1,4 @@
+.file "crtn.s"
 .section .init
 	pop %rax
 	ret
diff --git a/crt/x86_64/crti.s b/crt/x86_64/crti.s
index 4788968b..8668b7c7 100644
--- a/crt/x86_64/crti.s
+++ b/crt/x86_64/crti.s
@@ -1,3 +1,4 @@
+.file "crti.s"
 .section .init
 .global _init
 _init:
diff --git a/crt/x86_64/crtn.s b/crt/x86_64/crtn.s
index 29198b77..ef73d295 100644
--- a/crt/x86_64/crtn.s
+++ b/crt/x86_64/crtn.s
@@ -1,3 +1,4 @@
+.file "crtn.s"
 .section .init
 	pop %rax
 	ret
-- 
2.29.2


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [musl] [PATCH] crt: Add .file directive
  2020-10-30 18:44 [musl] [PATCH] crt: Add .file directive Khem Raj
@ 2020-10-30 18:50 ` Rich Felker
  2020-10-30 20:54   ` Fangrui Song
  0 siblings, 1 reply; 3+ messages in thread
From: Rich Felker @ 2020-10-30 18:50 UTC (permalink / raw)
  To: musl

On Fri, Oct 30, 2020 at 11:44:02AM -0700, Khem Raj wrote:
> Musl linked binaries come out to be not reproducible because
> absolute build path is seen in debug info of crti.o and crtn.o
> This is due to the fact that these objects are built from assembly
> source files and they are missing .file directive
> if we add .file <filename>.s in them then debug info encodes this
> value instead of absolute path in debug_line section

Surely there should be some better way to achieve this with CFLAGS
instead of duplication across every source file..?

Rich

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [musl] [PATCH] crt: Add .file directive
  2020-10-30 18:50 ` Rich Felker
@ 2020-10-30 20:54   ` Fangrui Song
  0 siblings, 0 replies; 3+ messages in thread
From: Fangrui Song @ 2020-10-30 20:54 UTC (permalink / raw)
  To: musl

On 2020-10-30, Rich Felker wrote:
>On Fri, Oct 30, 2020 at 11:44:02AM -0700, Khem Raj wrote:
>> Musl linked binaries come out to be not reproducible because
>> absolute build path is seen in debug info of crti.o and crtn.o
>> This is due to the fact that these objects are built from assembly
>> source files and they are missing .file directive
>> if we add .file <filename>.s in them then debug info encodes this
>> value instead of absolute path in debug_line section

.debug_line is unrelated because there is no .loc directive in these
crti.s and crtn.s files.

Many architectures do not leave non-STT_SECTION STB_LOCAL symbols in
crti.o and crtn.o, so they don't need to be patched (even if the
maintainer agrees to add the workaround in musl, instead of fixing the
toolchain).

>Surely there should be some better way to achieve this with CFLAGS
>instead of duplication across every source file..?
>
>Rich

https://bugs.llvm.org/show_bug.cgi?id=48023 captures the nature of the
problem. You may send a message to binutils@sourceware.org how GCC/gas
should handle this situation.

LLD and gold do not synthesize STT_FILE, hence no such problem.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-10-30 20:54 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-30 18:44 [musl] [PATCH] crt: Add .file directive Khem Raj
2020-10-30 18:50 ` Rich Felker
2020-10-30 20:54   ` Fangrui Song

mailing list of musl libc

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://inbox.vuxu.org/musl

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V1 musl musl/ http://inbox.vuxu.org/musl \
		musl@inbox.vuxu.org
	public-inbox-index musl

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.vuxu.org/vuxu.archive.musl


code repositories for the project(s) associated with this inbox:

	https://git.vuxu.org/mirror/musl/

AGPL code for this site: git clone https://public-inbox.org/public-inbox.git