1 /*
2 * This file and its contents are supplied under the terms of the
3 * Common Development and Distribution License ("CDDL"), version 1.0.
4 * You may only use this file in accordance with the terms of version
5 * 1.0 of the CDDL.
6 *
7 * A full copy of the text of the CDDL should have accompanied this
8 * source. A copy of the CDDL is also available via the Internet at
9 * http://www.illumos.org/license/CDDL.u
10 */
11
12 /*
13 * Copyright 2019, Richard Lowe.
14 */
15
16 .section .rodata.str1.1,"aMS",@progbits,1
17 .LC0:
18 .string "foo: %s (%p)\n"
19 .section .tdata,"awT",@progbits
20 .align 4
21 .type foo, @object
22 .size foo,4
23 .local foo
24 foo:
25 .string "foo"
26 .text
27 .globl main
28 .type main, @function
29 main:
30 pushl %ebp
31 movl %esp, %ebp
32 /*
33 * an R_386_TLS_LDM relocation without a following
34 * followed by an R_386_PLT32 relocation, rather than an
35 * R_386_TLS_LDM_PLT the call should be removed, and _not_
36 * left alone unrelocated as it was prior to:
37 * 10267 ld and GCC disagree about i386 local dynamic TLS
38 */
39 leal foo@TLSLDM(%ebx), %eax
40 call ___tls_get_addr@PLT
41 leal foo@DTPOFF(%eax), %edx
42 pushl %edx
43 pushl %edx
44 pushl $.LC0
45 call printf@PLT
46 movl $0x0,%eax
47 leave
48 ret
49 .size main, .-main