Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
P
ppe42-binutils
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
OpenPOWER Firmware
ppe42-binutils
Commits
2e3744e9
Commit
2e3744e9
authored
Oct 29, 2013
by
Alan Modra
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Change plt stubs to have destination in r12.
(cherry picked from commit 71a39c98f8bedad54818c62ab2d567b0e2de546b)
parent
9d1ae407
Changes
22
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
300 additions
and
244 deletions
+300
-244
bfd/ChangeLog
bfd/ChangeLog
+6
-0
bfd/elf64-ppc.c
bfd/elf64-ppc.c
+63
-63
ld/testsuite/ChangeLog
ld/testsuite/ChangeLog
+24
-0
ld/testsuite/ld-powerpc/relbrlt.d
ld/testsuite/ld-powerpc/relbrlt.d
+4
-4
ld/testsuite/ld-powerpc/tls.d
ld/testsuite/ld-powerpc/tls.d
+2
-2
ld/testsuite/ld-powerpc/tls.g
ld/testsuite/ld-powerpc/tls.g
+3
-3
ld/testsuite/ld-powerpc/tls.s
ld/testsuite/ld-powerpc/tls.s
+6
-1
ld/testsuite/ld-powerpc/tlsexe.d
ld/testsuite/ld-powerpc/tlsexe.d
+12
-11
ld/testsuite/ld-powerpc/tlsexe.g
ld/testsuite/ld-powerpc/tlsexe.g
+1
-1
ld/testsuite/ld-powerpc/tlsexe.r
ld/testsuite/ld-powerpc/tlsexe.r
+29
-27
ld/testsuite/ld-powerpc/tlsexetoc.d
ld/testsuite/ld-powerpc/tlsexetoc.d
+12
-11
ld/testsuite/ld-powerpc/tlsexetoc.g
ld/testsuite/ld-powerpc/tlsexetoc.g
+1
-1
ld/testsuite/ld-powerpc/tlsexetoc.r
ld/testsuite/ld-powerpc/tlsexetoc.r
+30
-28
ld/testsuite/ld-powerpc/tlsso.d
ld/testsuite/ld-powerpc/tlsso.d
+13
-12
ld/testsuite/ld-powerpc/tlsso.g
ld/testsuite/ld-powerpc/tlsso.g
+1
-1
ld/testsuite/ld-powerpc/tlsso.r
ld/testsuite/ld-powerpc/tlsso.r
+32
-28
ld/testsuite/ld-powerpc/tlstoc.d
ld/testsuite/ld-powerpc/tlstoc.d
+2
-2
ld/testsuite/ld-powerpc/tlstoc.g
ld/testsuite/ld-powerpc/tlstoc.g
+6
-6
ld/testsuite/ld-powerpc/tlstoc.s
ld/testsuite/ld-powerpc/tlstoc.s
+6
-1
ld/testsuite/ld-powerpc/tlstocso.d
ld/testsuite/ld-powerpc/tlstocso.d
+13
-12
ld/testsuite/ld-powerpc/tlstocso.g
ld/testsuite/ld-powerpc/tlstocso.g
+1
-1
ld/testsuite/ld-powerpc/tlstocso.r
ld/testsuite/ld-powerpc/tlstocso.r
+33
-29
No files found.
bfd/ChangeLog
View file @
2e3744e9
2013-11-15 Alan Modra <amodra@gmail.com>
Apply changes from mainline to 2.24
2013-10-30 Alan Modra <amodra@gmail.com>
* elf64-ppc.c (build_plt_stub): Switch stubs to use r11 as base
reg and r12 as destination.
(ppc_build_one_stub): Likewise.
(ppc64_elf_build_stubs): Likewise for glink.
2013-10-30 Alan Modra <amodra@gmail.com>
* reloc.c (BFD_RELOC_PPC64_ADDR16_HIGH, BFD_RELOC_PPC64_ADDR16_HIGHA,
BFD_RELOC_PPC64_TPREL16_HIGH, BFD_RELOC_PPC64_TPREL16_HIGHA,
...
...
bfd/elf64-ppc.c
View file @
2e3744e9
...
...
@@ -137,29 +137,29 @@ static bfd_vma opd_entry_value
/* .plt call stub instructions. The normal stub is like this, but
sometimes the .plt entry crosses a 64k boundary and we need to
insert an addi to adjust r1
2
. */
insert an addi to adjust r1
1
. */
#define PLT_CALL_STUB_SIZE (7*4)
#define ADDIS_R12_R2 0x3d820000 /* addis %r12,%r2,xxx@ha */
#define STD_R2_40R1 0xf8410028 /* std %r2,40(%r1) */
#define LD_R11_0R12 0xe96c0000 /* ld %r11,xxx+0@l(%r12) */
#define MTCTR_R11 0x7d6903a6 /* mtctr %r11 */
#define LD_R2_0R12 0xe84c0000 /* ld %r2,xxx+8@l(%r12) */
/* ld %r11,xxx+16@l(%r12) */
#define ADDIS_R11_R2 0x3d620000 /* addis %r11,%r2,xxx@ha */
#define LD_R12_0R11 0xe98b0000 /* ld %r12,xxx+0@l(%r11) */
#define MTCTR_R12 0x7d8903a6 /* mtctr %r12 */
#define LD_R2_0R11 0xe84b0000 /* ld %r2,xxx+8@l(%r11) */
#define LD_R11_0R11 0xe96b0000 /* ld %r11,xxx+16@l(%r11) */
#define BCTR 0x4e800420 /* bctr */
#define ADDIS_R12_R12 0x3d8c0000 /* addis %r12,%r12,off@ha */
#define ADDI_R12_R12 0x398c0000 /* addi %r12,%r12,off@l */
#define ADDI_R11_R11 0x396b0000 /* addi %r11,%r11,off@l */
#define ADDIS_R2_R2 0x3c420000 /* addis %r2,%r2,off@ha */
#define ADDI_R2_R2 0x38420000 /* addi %r2,%r2,off@l */
#define XOR_R11_R11_R11 0x7d6b5a78 /* xor %r11,%r11,%r11 */
#define ADD_R12_R12_R11 0x7d8c5a14 /* add %r12,%r12,%r11 */
#define XOR_R2_R12_R12 0x7d826278 /* xor %r2,%r12,%r12 */
#define ADD_R11_R11_R2 0x7d6b1214 /* add %r11,%r11,%r2 */
#define XOR_R11_R12_R12 0x7d8b6278 /* xor %r11,%r12,%r12 */
#define ADD_R2_R2_R11 0x7c425a14 /* add %r2,%r2,%r11 */
#define CMPLDI_R2_0 0x28220000 /* cmpldi %r2,0 */
#define BNECTR 0x4ca20420 /* bnectr+ */
#define BNECTR_P4 0x4ce20420 /* bnectr+ */
#define LD_R12_0R2 0xe9820000 /* ld %r12,xxx+0(%r2) */
#define LD_R11_0R2 0xe9620000 /* ld %r11,xxx+0(%r2) */
#define LD_R2_0R2 0xe8420000 /* ld %r2,xxx+0(%r2) */
...
...
@@ -174,13 +174,13 @@ static bfd_vma opd_entry_value
#define BCL_20_31 0x429f0005 /* bcl 20,31,1f */
/* 1: */
#define MFLR_R11 0x7d6802a6 /* mflr %11 */
#define LD_R2_M16R11 0xe84bfff0
/* ld %2,(0b-1b)(%11) */
/* ld %2,(0b-1b)(%11) */
#define MTLR_R12 0x7d8803a6 /* mtlr %12 */
#define ADD_R1
2_R2_R11 0x7d825a14 /* add %12
,%2,%11 */
/* ld %1
1,0(%12
) */
/* ld %2,8(%1
2
) */
/* mtctr %1
1
*/
/* ld %11,16(%1
2
) */
#define ADD_R1
1_R2_R11 0x7d625a14 /* add %11
,%2,%11 */
/* ld %1
2,0(%11
) */
/* ld %2,8(%1
1
) */
/* mtctr %1
2
*/
/* ld %11,16(%1
1
) */
/* bctr */
/* Pad with this. */
...
...
@@ -3559,13 +3559,13 @@ ppc64_elf_get_synthetic_symtab (bfd *abfd,
.
.
. .foo_stub:
.
addis 12,2,Lfoo@toc@ha
# in practice, the call stub
. addi
12,12,Lfoo@toc@l
# is slightly optimized, but
.
std 2,40(1)
# this is the general idea
. ld 1
1,0(12
)
. ld 2,8(1
2
)
. mtctr 1
1
. ld 11,16(1
2
)
.
std 2,40(1)
# in practice, the call stub
. addi
s 11,2,Lfoo@toc@ha
# is slightly optimized, but
.
addi 11,11,Lfoo@toc@l
# this is the general idea
. ld 1
2,0(11
)
. ld 2,8(1
1
)
. mtctr 1
2
. ld 11,16(1
1
)
. bctr
.
. .section .plt
...
...
@@ -3657,21 +3657,21 @@ must_be_dyn_reloc (struct bfd_link_info *info,
ppc_stub_plt_branch:
Similar to the above, but a 24 bit branch in the stub section won't
reach its destination.
. addis %r1
2
,%r2,xxx@toc@ha
. ld %r1
1,xxx@toc@l(%r12
)
. mtctr %r1
1
. addis %r1
1
,%r2,xxx@toc@ha
. ld %r1
2,xxx@toc@l(%r11
)
. mtctr %r1
2
. bctr
ppc_stub_plt_call:
Used to call a function in a shared library. If it so happens that
the plt entry referenced crosses a 64k boundary, then an extra
"addi %r12,%r12,xxx@toc@l" will be inserted before the "mtctr".
. addis %r12,%r2,xxx@toc@ha
"addi %r11,%r11,xxx@toc@l" will be inserted before the "mtctr".
. std %r2,40(%r1)
. ld %r11,xxx+0@toc@l(%r12)
. mtctr %r11
. ld %r2,xxx+8@toc@l(%r12)
. ld %r11,xxx+16@toc@l(%r12)
. addis %r11,%r2,xxx@toc@ha
. ld %r12,xxx+0@toc@l(%r11)
. mtctr %r12
. ld %r2,xxx+8@toc@l(%r11)
. ld %r11,xxx+16@toc@l(%r11)
. bctr
ppc_stub_long_branch and ppc_stub_plt_branch may also have additional
...
...
@@ -3684,11 +3684,11 @@ must_be_dyn_reloc (struct bfd_link_info *info,
A ppc_stub_plt_branch with an r2 offset looks like:
. std %r2,40(%r1)
. addis %r1
2
,%r2,xxx@toc@ha
. ld %r1
1,xxx@toc@l(%r12
)
. addis %r1
1
,%r2,xxx@toc@ha
. ld %r1
2,xxx@toc@l(%r11
)
. addis %r2,%r2,off@ha
. addi %r2,%r2,off@l
. mtctr %r1
1
. mtctr %r1
2
. bctr
In cases where the "addis" instruction would add zero, the "addis" is
...
...
@@ -9779,9 +9779,9 @@ ppc_type_of_stub (asection *input_sec,
the appropriate glink entry if so.
. fake dep barrier compare
. ld 1
1,xxx(2) ld 11
,xxx(2)
. mtctr 1
1 mtctr 11
. xor 11,1
1,11
ld 2,xxx+8(2)
. ld 1
2,xxx(2) ld 12
,xxx(2)
. mtctr 1
2 mtctr 12
. xor 11,1
2,12
ld 2,xxx+8(2)
. add 2,2,11 cmpldi 2,0
. ld 2,xxx+8(2) bnectr+
. bctr b <glink_entry>
...
...
@@ -9916,22 +9916,22 @@ build_plt_stub (struct ppc_link_hash_table *htab,
if (ALWAYS_EMIT_R2SAVE
|| stub_entry->stub_type == ppc_stub_plt_call_r2save)
bfd_put_32 (obfd, STD_R2_40R1, p), p += 4;
bfd_put_32 (obfd, ADDIS_R1
2
_R2 | PPC_HA (offset), p), p += 4;
bfd_put_32 (obfd, LD_R1
1_0R12
| PPC_LO (offset), p), p += 4;
bfd_put_32 (obfd, ADDIS_R1
1
_R2 | PPC_HA (offset), p), p += 4;
bfd_put_32 (obfd, LD_R1
2_0R11
| PPC_LO (offset), p), p += 4;
if (PPC_HA (offset + 8 + 8 * plt_static_chain) != PPC_HA (offset))
{
bfd_put_32 (obfd, ADDI_R1
2_R12
| PPC_LO (offset), p), p += 4;
bfd_put_32 (obfd, ADDI_R1
1_R11
| PPC_LO (offset), p), p += 4;
offset = 0;
}
bfd_put_32 (obfd, MTCTR_R1
1
, p), p += 4;
bfd_put_32 (obfd, MTCTR_R1
2
, p), p += 4;
if (use_fake_dep)
{
bfd_put_32 (obfd, XOR_R
11_R11_R11, p),
p += 4;
bfd_put_32 (obfd, ADD_R1
2_R12_R11, p),
p += 4;
bfd_put_32 (obfd, XOR_R
2_R12_R12, p),
p += 4;
bfd_put_32 (obfd, ADD_R1
1_R11_R2, p),
p += 4;
}
bfd_put_32 (obfd, LD_R2_0R1
2
| PPC_LO (offset + 8), p), p += 4;
bfd_put_32 (obfd, LD_R2_0R1
1
| PPC_LO (offset + 8), p), p += 4;
if (plt_static_chain)
bfd_put_32 (obfd, LD_R11_0R1
2
| PPC_LO (offset + 16), p), p += 4;
bfd_put_32 (obfd, LD_R11_0R1
1
| PPC_LO (offset + 16), p), p += 4;
}
else
{
...
...
@@ -9963,16 +9963,16 @@ build_plt_stub (struct ppc_link_hash_table *htab,
if (ALWAYS_EMIT_R2SAVE
|| stub_entry->stub_type == ppc_stub_plt_call_r2save)
bfd_put_32 (obfd, STD_R2_40R1, p), p += 4;
bfd_put_32 (obfd, LD_R1
1
_0R2 | PPC_LO (offset), p), p += 4;
bfd_put_32 (obfd, LD_R1
2
_0R2 | PPC_LO (offset), p), p += 4;
if (PPC_HA (offset + 8 + 8 * plt_static_chain) != PPC_HA (offset))
{
bfd_put_32 (obfd, ADDI_R2_R2 | PPC_LO (offset), p), p += 4;
offset = 0;
}
bfd_put_32 (obfd, MTCTR_R1
1
, p), p += 4;
bfd_put_32 (obfd, MTCTR_R1
2
, p), p += 4;
if (use_fake_dep)
{
bfd_put_32 (obfd, XOR_R11_R1
1_R11
, p), p += 4;
bfd_put_32 (obfd, XOR_R11_R1
2_R12
, p), p += 4;
bfd_put_32 (obfd, ADD_R2_R2_R11, p), p += 4;
}
if (plt_static_chain)
...
...
@@ -10321,14 +10321,14 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
if (PPC_HA (off) != 0)
{
size = 16;
bfd_put_32 (htab->stub_bfd, ADDIS_R1
2
_R2 | PPC_HA (off), loc);
bfd_put_32 (htab->stub_bfd, ADDIS_R1
1
_R2 | PPC_HA (off), loc);
loc += 4;
bfd_put_32 (htab->stub_bfd, LD_R1
1_0R12
| PPC_LO (off), loc);
bfd_put_32 (htab->stub_bfd, LD_R1
2_0R11
| PPC_LO (off), loc);
}
else
{
size = 12;
bfd_put_32 (htab->stub_bfd, LD_R1
1
_0R2 | PPC_LO (off), loc);
bfd_put_32 (htab->stub_bfd, LD_R1
2
_0R2 | PPC_LO (off), loc);
}
}
else
...
...
@@ -10347,14 +10347,14 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
if (PPC_HA (off) != 0)
{
size += 4;
bfd_put_32 (htab->stub_bfd, ADDIS_R1
2
_R2 | PPC_HA (off), loc);
bfd_put_32 (htab->stub_bfd, ADDIS_R1
1
_R2 | PPC_HA (off), loc);
loc += 4;
bfd_put_32 (htab->stub_bfd, LD_R1
1_0R12
| PPC_LO (off), loc);
bfd_put_32 (htab->stub_bfd, LD_R1
2_0R11
| PPC_LO (off), loc);
loc += 4;
}
else
{
bfd_put_32 (htab->stub_bfd, LD_R1
1
_0R2 | PPC_LO (off), loc);
bfd_put_32 (htab->stub_bfd, LD_R1
2
_0R2 | PPC_LO (off), loc);
loc += 4;
}
...
...
@@ -10367,7 +10367,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
bfd_put_32 (htab->stub_bfd, ADDI_R2_R2 | PPC_LO (r2off), loc);
}
loc += 4;
bfd_put_32 (htab->stub_bfd, MTCTR_R1
1
, loc);
bfd_put_32 (htab->stub_bfd, MTCTR_R1
2
, loc);
loc += 4;
bfd_put_32 (htab->stub_bfd, BCTR, loc);
break;
...
...
@@ -12131,19 +12131,19 @@ ppc64_elf_build_stubs (bfd_boolean emit_stub_syms,
p += 4;
bfd_put_32 (htab->glink->owner, MFLR_R11, p);
p += 4;
bfd_put_32 (htab->glink->owner, LD_R2_
M16R11
, p);
bfd_put_32 (htab->glink->owner, LD_R2_
0R11 | (-16 & 0xfffc)
, p);
p += 4;
bfd_put_32 (htab->glink->owner, MTLR_R12, p);
p += 4;
bfd_put_32 (htab->glink->owner, ADD_R1
2
_R2_R11, p);
bfd_put_32 (htab->glink->owner, ADD_R1
1
_R2_R11, p);
p += 4;
bfd_put_32 (htab->glink->owner, LD_R1
1_0R12
, p);
bfd_put_32 (htab->glink->owner, LD_R1
2_0R11
, p);
p += 4;
bfd_put_32 (htab->glink->owner, LD_R2_0R1
2
| 8, p);
bfd_put_32 (htab->glink->owner, LD_R2_0R1
1
| 8, p);
p += 4;
bfd_put_32 (htab->glink->owner, MTCTR_R1
1
, p);
bfd_put_32 (htab->glink->owner, MTCTR_R1
2
, p);
p += 4;
bfd_put_32 (htab->glink->owner, LD_R11_0R1
2
| 16, p);
bfd_put_32 (htab->glink->owner, LD_R11_0R1
1
| 16, p);
p += 4;
bfd_put_32 (htab->glink->owner, BCTR, p);
p += 4;
...
...
ld/testsuite/ChangeLog
View file @
2e3744e9
2013-11-15 Alan Modra <amodra@gmail.com>
Apply changes from mainline to 2.24
2013-10-30 Alan Modra <amodra@gmail.com>
* ld-powerpc/tls.s: Add proper .opd entry for _start.
* ld-powerpc/tlstoc.s: Likewise.
* ld-powerpc/relbrlt.d: Update for changed stubs.
* ld-powerpc/tls.d: Update for changed stubs and _start .opd entry.
* ld-powerpc/tls.g: Likewise.
* ld-powerpc/tlsexe.d: Likewise.
* ld-powerpc/tlsexe.g: Likewise.
* ld-powerpc/tlsexe.r: Likewise.
* ld-powerpc/tlsexetoc.d: Likewise.
* ld-powerpc/tlsexetoc.g: Likewise.
* ld-powerpc/tlsexetoc.r: Likewise.
* ld-powerpc/tlsso.d: Likewise.
* ld-powerpc/tlsso.g: Likewise.
* ld-powerpc/tlsso.r: Likewise.
* ld-powerpc/tlstoc.d: Likewise.
* ld-powerpc/tlstoc.g: Likewise.
* ld-powerpc/tlstocso.d: Likewise.
* ld-powerpc/tlstocso.g: Likewise.
* ld-powerpc/tlstocso.r: Likewise.
2013-11-07 Roland McGrath <mcgrathr@google.com>
* ld-x86-64/x86-64.exp (mixed1, mixed2): Loosen error string match
...
...
ld/testsuite/ld-powerpc/relbrlt.d
View file @
2e3744e9
...
...
@@ -22,9 +22,9 @@ Disassembly of section \.text:
\
.
\
.
\
.
[
0
-
9
a
-
f
]*<.*
plt_branch
.*>:
[
0
-
9
a
-
f
]*:
(
e9
62
80
00
|
00
80
62
e9
)
ld
r11
,-
32768
\
(
r2
\
)
[
0
-
9
a
-
f
]*:
(
e9
82
80
00
|
00
80
82
e9
)
ld
r12
,-
32768
\
(
r2
\
)
[
0
-
9
a
-
f
]*:
R_PPC64_TOC16_DS
\
*
ABS
\
*
\
+
0x157f00e8
[
0
-
9
a
-
f
]*:
(
7
d
69
03
a6
|
a6
03
69
7
d
)
mtctr
r11
[
0
-
9
a
-
f
]*:
(
7
d
89
03
a6
|
a6
03
89
7
d
)
mtctr
r12
[
0
-
9
a
-
f
]*:
(
4
e
80
04
20
|
20
04
80
4
e
)
bctr
[
0
-
9
a
-
f
]*<.*
long_branch
.*>:
...
...
@@ -32,9 +32,9 @@ Disassembly of section \.text:
[
0
-
9
a
-
f
]*:
R_PPC64_REL24
\
*
ABS
\
*
\
+
0x137e00fc
[
0
-
9
a
-
f
]*<.*
plt_branch
.*>:
[
0
-
9
a
-
f
]*:
(
e9
62
80
08
|
08
80
62
e9
)
ld
r11
,-
32760
\
(
r2
\
)
[
0
-
9
a
-
f
]*:
(
e9
82
80
08
|
08
80
82
e9
)
ld
r12
,-
32760
\
(
r2
\
)
[
0
-
9
a
-
f
]*:
R_PPC64_TOC16_DS
\
*
ABS
\
*
\
+
0x157f00f0
[
0
-
9
a
-
f
]*:
(
7
d
69
03
a6
|
a6
03
69
7
d
)
mtctr
r11
[
0
-
9
a
-
f
]*:
(
7
d
89
03
a6
|
a6
03
89
7
d
)
mtctr
r12
[
0
-
9
a
-
f
]*:
(
4
e
80
04
20
|
20
04
80
4
e
)
bctr
\
.
\
.
\
.
...
...
ld/testsuite/ld-powerpc/tls.d
View file @
2e3744e9
#
source
:
tls
.
s
#
source
:
tlslib
.
s
#
as
:
-
a64
#
ld
:
#
ld
:
#
objdump
:
-
dr
#
target
:
powerpc64
*-*-*
...
...
@@ -9,7 +9,7 @@
Disassembly
of
section
\
.
text
:
0
+
100000e8
<
_start
>:
0
+
100000e8
<
\
.
_start
>:
.*:
(
3
c
6
d
00
00
|
00
00
6
d
3
c
)
addis
r3
,
r13
,
0
.*:
(
60
00
00
00
|
00
00
00
60
)
nop
.*:
(
38
63
90
78
|
78
90
63
38
)
addi
r3
,
r3
,-
28552
...
...
ld/testsuite/ld-powerpc/tls.g
View file @
2e3744e9
#source: tls.s
#source: tlslib.s
#as: -a64
#ld:
#ld:
#objdump: -sj.got
#target: powerpc64*-*-*
.*
Contents of section \.got:
100101
e0 (00000000|e0810110) (100181e0
|00000000) (ffffffff|1880ffff) (ffff8018|ffffffff) .*
10010
1f0
(ffffffff|5880ffff) (ffff8058|ffffffff) .*
100101
f8 (00000000|f8810110) (100181f8
|00000000) (ffffffff|1880ffff) (ffff8018|ffffffff) .*
10010
208
(ffffffff|5880ffff) (ffff8058|ffffffff) .*
ld/testsuite/ld-powerpc/tls.s
View file @
2e3744e9
...
...
@@ -19,8 +19,13 @@ ie4: .quad 0x56789abcdef01234
le4
:
.
quad
0x6789abcdef012345
le5
:
.
quad
0x789abcdef0123456
.
text
.
section
".opd"
,
"aw"
,
@
progbits
.
p2align
3
_start
:
.
quad
.
L_start
,
.
TOC
.
@
tocbase
,
0
.
text
.
L_start
:
#
extern
syms
#
GD
addi
3
,
2
,
gd
@
got
@
tlsgd
#
R_PPC64_GOT_TLSGD16
gd
...
...
ld/testsuite/ld-powerpc/tlsexe.d
View file @
2e3744e9
...
...
@@ -14,13 +14,13 @@ Disassembly of section \.text:
.*
(
7
c
60
1
b
78
|
78
1
b
60
7
c
)
mr
r0
,
r3
.*
(
2
c
2
b
00
00
|
00
00
2
b
2
c
)
cmpdi
r11
,
0
.*
(
7
c
6
c
6
a
14
|
14
6
a
6
c
7
c
)
add
r3
,
r12
,
r13
.*
(
4
d
82
00
20
|
20
00
82
4
d
)
beqlr
.*
(
4
d
82
00
20
|
20
00
82
4
d
)
beqlr
*
.*
(
7
c
03
03
78
|
78
03
03
7
c
)
mr
r3
,
r0
.*
(
7
d
68
02
a6
|
a6
02
68
7
d
)
mflr
r11
.*
(
f9
61
00
20
|
20
00
61
f9
)
std
r11
,
32
\
(
r1
\
)
.*
(
f8
41
00
28
|
28
00
41
f8
)
std
r2
,
40
\
(
r1
\
)
.*
(
e9
62
80
48
|
48
80
62
e9
)
ld
r11
,-
32696
\
(
r2
\
)
.*
(
7
d
69
03
a6
|
a6
03
69
7
d
)
mtctr
r11
.*
(
e9
82
80
48
|
48
80
82
e9
)
ld
r12
,-
32696
\
(
r2
\
)
.*
(
7
d
89
03
a6
|
a6
03
89
7
d
)
mtctr
r12
.*
(
e8
42
80
50
|
50
80
42
e8
)
ld
r2
,-
32688
\
(
r2
\
)
.*
(
4
e
80
04
21
|
21
04
80
4
e
)
bctrl
.*
(
e9
61
00
20
|
20
00
61
e9
)
ld
r11
,
32
\
(
r1
\
)
...
...
@@ -28,7 +28,7 @@ Disassembly of section \.text:
.*
(
7
d
68
03
a6
|
a6
03
68
7
d
)
mtlr
r11
.*
(
4
e
80
00
20
|
20
00
80
4
e
)
blr
.*
<
_start
>:
.*
<
.
_start
>:
.*
(
e8
62
80
10
|
10
80
62
e8
)
ld
r3
,-
32752
\
(
r2
\
)
.*
(
60
00
00
00
|
00
00
00
60
)
nop
.*
(
7
c
63
6
a
14
|
14
6
a
63
7
c
)
add
r3
,
r3
,
r13
...
...
@@ -67,22 +67,23 @@ Disassembly of section \.text:
.*
(
e9
4
d
90
2
a
|
2
a
90
4
d
e9
)
lwa
r10
,-
28632
\
(
r13
\
)
.*
(
3
d
2
d
00
00
|
00
00
2
d
3
d
)
addis
r9
,
r13
,
0
.*
(
a9
49
90
30
|
30
90
49
a9
)
lha
r10
,-
28624
\
(
r9
\
)
.*
(
00
00
00
00
|
00
02
01
00
)
.*
.*
(
00
01
02
00
|
00
00
00
00
)
.*
.*
(
00
00
00
00
|
18
02
01
00
)
.*
.*
(
00
01
02
18
|
00
00
00
00
)
.*
.*
<
__glink_PLTresolve
>:
.*
(
7
d
88
02
a6
|
a6
02
88
7
d
)
mflr
r12
.*
(
42
9
f
00
05
|
05
00
9
f
42
)
bcl
20
,
4
\
*
cr7
\
+
so
,.*
.*
(
7
d
68
02
a6
|
a6
02
68
7
d
)
mflr
r11
.*
(
e8
4
b
ff
f0
|
f0
ff
4
b
e8
)
ld
r2
,-
16
\
(
r11
\
)
.*
(
7
d
88
03
a6
|
a6
03
88
7
d
)
mtlr
r12
.*
(
7
d
82
5
a
14
|
14
5
a
82
7
d
)
add
r12
,
r2
,
r11
.*
(
e9
6
c
00
00
|
00
00
6
c
e9
)
ld
r11
,
0
\
(
r12
\
)
.*
(
e8
4
c
00
08
|
08
00
4
c
e8
)
ld
r2
,
8
\
(
r12
\
)
.*
(
7
d
69
03
a6
|
a6
03
69
7
d
)
mtctr
r11
.*
(
e9
6
c
00
10
|
10
00
6
c
e9
)
ld
r11
,
16
\
(
r12
\
)
.*
(
7
d
62
5
a
14
|
14
5
a
62
7
d
)
add
r11
,
r2
,
r11
.*
(
e9
8
b
00
00
|
00
00
8
b
e9
)
ld
r12
,
0
\
(
r11
\
)
.*
(
e8
4
b
00
08
|
08
00
4
b
e8
)
ld
r2
,
8
\
(
r11
\
)
.*
(
7
d
89
03
a6
|
a6
03
89
7
d
)
mtctr
r12
.*
(
e9
6
b
00
10
|
10
00
6
b
e9
)
ld
r11
,
16
\
(
r11
\
)
.*
(
4
e
80
04
20
|
20
04
80
4
e
)
bctr
.*
(
60
00
00
00
|
00
00
00
60
)
nop
.*
(
60
00
00
00
|
00
00
00
60
)
nop
.*
(
60
00
00
00
|
00
00
00
60
)
nop
.*
<
__tls_get_addr_opt
@plt
>:
.*
(
38
00
00
00
|
00
00
00
38
)
li
r0
,
0
.*
(
4
b
ff
ff
c4
|
c4
ff
ff
4
b
)
b
.*
ld/testsuite/ld-powerpc/tlsexe.g
View file @
2e3744e9
...
...
@@ -7,6 +7,6 @@
.*
Contents of section \.got:
.* (00000000|
20860110) (10018620
|00000000) (ffffffff|1880ffff) (ffff8018|ffffffff) .*
.* (00000000|
38860110) (10018638
|00000000) (ffffffff|1880ffff) (ffff8018|ffffffff) .*
.* 00000000 00000000 00000000 00000000 .*
.* 00000000 00000000 00000000 00000000 .*
ld/testsuite/ld-powerpc/tlsexe.r
View file @
2e3744e9
#source: tls.s
#source: tlslib.s
#as: -a64
#ld:
#ld:
#readelf: -WSsrl
#target: powerpc64*-*-*
...
...
@@ -20,6 +20,7 @@ Section Headers:
+
\
[[
0-9
]
+
\
]
\
.tdata
+
PROGBITS
.
*
0+38
0
+
WAT
+0
+0
+8
+
\
[[
0-9
]
+
\
]
\
.tbss
+
NOBITS
.
*
0+38
0
+
WAT
+0
+0
+8
+
\
[[
0-9
]
+
\
]
\
.dynamic
+
DYNAMIC
.
*
0+160
10
+
WA
+4
+0
+8
+
\
[[
0-9
]
+
\
]
\
.opd
.
*
+
\
[[
0-9
]
+
\
]
\
.got
+
PROGBITS
.
*
0+30
08
+
WA
+0
+0
+8
+
\
[[
0-9
]
+
\
]
\
.plt
+
.
*
+
\
[[
0-9
]
+
\
]
\
.shstrtab
+
.
*
...
...
@@ -44,11 +45,11 @@ Program Headers:
Section
to
Segment
mapping
:
+
Segment
Sections
\
.
\
.
\
.
+0
+
+
+01
+
\
.interp
+02
+
\
.interp
\
.hash
\
.dynsym
\
.dynstr
\
.rela
\
.dyn
\
.rela
\
.plt
\
.text
+03
+
\
.tdata
\
.dynamic
\
.
got
\
.plt
+04
+
\
.dynamic
+05
+
\
.tdata
\
.tbss
+01
+
\
.interp
*
+02
+
\
.interp
\
.hash
\
.dynsym
\
.dynstr
\
.rela
\
.dyn
\
.rela
\
.plt
\
.text
*
+03
+
\
.tdata
\
.dynamic
\
.
opd
\
.got
\
.plt
*
+04
+
\
.dynamic
*
+05
+
\
.tdata
\
.tbss
*
Relocation
section
'\.rela\.dyn'
at
offset
.
*
contains
3
entries
:
+
Offset
+
Info
+
Type
+
Symbol
's Value +Symbol'
s
Name
\
+
Addend
...
...
@@ -62,30 +63,31 @@ Relocation section '\.rela\.plt' at offset .* contains 1 entries:
Symbol
table
'\.dynsym'
contains
[
0-9
]
+
entries
:
+
Num
:
+
Value
+
Size
+
Type
+
Bind
+
Vis
+
Ndx
+
Name
.
*
NOTYPE
+
LOCAL
+
DEFAULT
+
UND
.
*
NOTYPE
+
LOCAL
+
DEFAULT
+
UND
*
.
*
TLS
+
GLOBAL
+
DEFAULT
+
UND
gd
.
*
TLS
+
GLOBAL
+
DEFAULT
+
UND
ld
.
*
TLS
+
GLOBAL
+
DEFAULT
+9
ld2
.
*
NOTYPE
+
GLOBAL
+
DEFAULT
+1
2
__
bss_start
.
*
NOTYPE
+
GLOBAL
+
DEFAULT
+1
3
__
bss_start
.
*
FUNC
+
GLOBAL
+
DEFAULT
+
UND
__
tls_get_addr_opt
.
*
NOTYPE
+
GLOBAL
+
DEFAULT
+1
1
_
edata
.
*
NOTYPE
+
GLOBAL
+
DEFAULT
+1
2
_
end
.
*
NOTYPE
+
GLOBAL
+
DEFAULT
+1
2
_
edata
.
*
NOTYPE
+
GLOBAL
+
DEFAULT
+1
3
_
end
Symbol
table
'\.symtab'
contains
[
0-9
]
+
entries
:
+
Num
:
+
Value
+
Size
+
Type
+
Bind
+
Vis
+
Ndx
+
Name
.
*
0
+
+0
+
NOTYPE
+
LOCAL
+
DEFAULT
+
UND
.
*
SECTION
+
LOCAL
+
DEFAULT
+1
.
*
SECTION
+
LOCAL
+
DEFAULT
+2
.
*
SECTION
+
LOCAL
+
DEFAULT
+3
.
*
SECTION
+
LOCAL
+
DEFAULT
+4
.
*
SECTION
+
LOCAL
+
DEFAULT
+5
.
*
SECTION
+
LOCAL
+
DEFAULT
+6
.
*
SECTION
+
LOCAL
+
DEFAULT
+7
.
*
SECTION
+
LOCAL
+
DEFAULT
+8
.
*
SECTION
+
LOCAL
+
DEFAULT
+9
.
*
SECTION
+
LOCAL
+
DEFAULT
+10
.
*
SECTION
+
LOCAL
+
DEFAULT
+11
.
*
SECTION
+
LOCAL
+
DEFAULT
+12
.
*
0
+
+0
+
NOTYPE
+
LOCAL
+
DEFAULT
+
UND
*
.
*
SECTION
+
LOCAL
+
DEFAULT
+1
*
.
*
SECTION
+
LOCAL
+
DEFAULT
+2
*
.
*
SECTION
+
LOCAL
+
DEFAULT
+3
*
.
*
SECTION
+
LOCAL
+
DEFAULT
+4
*
.
*
SECTION
+
LOCAL
+
DEFAULT
+5
*
.
*
SECTION
+
LOCAL
+
DEFAULT
+6
*
.
*
SECTION
+
LOCAL
+
DEFAULT
+7
*
.
*
SECTION
+
LOCAL
+
DEFAULT
+8
*
.
*
SECTION
+
LOCAL
+
DEFAULT
+9
*
.
*
SECTION
+
LOCAL
+
DEFAULT
+10
*
.
*
SECTION
+
LOCAL
+
DEFAULT
+11
*
.
*
SECTION
+
LOCAL
+
DEFAULT
+12
*
.
*
SECTION
+
LOCAL
+
DEFAULT
+13
*
.
*
FILE
+
LOCAL
+
DEFAULT
+
ABS
.
*
.
*
TLS
+
LOCAL
+
DEFAULT
+8
gd4
.
*
TLS
+
LOCAL
+
DEFAULT
+8
ld4
...
...
@@ -104,12 +106,12 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.
*
GLOBAL
+
DEFAULT
+9
ld0
.
*
GLOBAL
+
DEFAULT
+9
le1
.
*
GLOBAL
+
DEFAULT
+
UND
ld
.
*
NOTYPE
+
GLOBAL
+
DEFAULT
+7
_
start
.
*
FUNC
+
GLOBAL
+
DEFAULT
+11
_
start
.
*
TLS
+
GLOBAL
+
DEFAULT
+9
ld2
.
*
TLS
+
GLOBAL
+
DEFAULT
+9
ld1
.
*
NOTYPE
+
GLOBAL
+
DEFAULT
+1
2
__
bss_start
.
*
NOTYPE
+
GLOBAL
+
DEFAULT
+1
3
__
bss_start
.
*
FUNC
+
GLOBAL
+
DEFAULT
+
UND
__
tls_get_addr_opt
.
*
NOTYPE
+
GLOBAL
+
DEFAULT
+1
1
_
edata
.
*
NOTYPE
+
GLOBAL
+
DEFAULT
+1
2
_
end
.
*
NOTYPE
+
GLOBAL
+
DEFAULT
+1
2
_
edata
.
*
NOTYPE
+
GLOBAL
+
DEFAULT
+1
3
_
end
.
*
TLS
+
GLOBAL
+
DEFAULT
+9
gd0
.
*
TLS
+
GLOBAL
+
DEFAULT
+9
ie0
ld/testsuite/ld-powerpc/tlsexetoc.d
View file @
2e3744e9
...
...
@@ -14,13 +14,13 @@ Disassembly of section \.text:
.*
(
7
c
60
1
b
78
|
78
1
b
60
7
c
)
mr
r0
,
r3
.*
(
2
c
2
b
00
00
|
00
00
2
b
2
c
)
cmpdi
r11
,
0
.*
(
7
c
6
c
6
a
14
|
14
6
a
6
c
7
c
)
add
r3
,
r12
,
r13
.*
(
4
d
82
00
20
|
20
00
82
4
d
)
beqlr
.*
(
4
d
82
00
20
|
20
00
82
4
d
)
beqlr
*
.*
(
7
c
03
03
78
|
78
03
03
7
c
)
mr
r3
,
r0
.*
(
7
d
68
02
a6
|
a6
02
68
7
d
)
mflr
r11
.*
(
f9
61
00
20
|
20
00
61
f9
)
std
r11
,
32
\
(
r1
\
)
.*
(
f8
41
00
28
|
28
00
41
f8
)
std
r2
,
40
\
(
r1
\
)
.*
(
e9
62
80
70
|
70
80
62
e9
)
ld
r11
,-
32656
\
(
r2
\
)
.*
(
7
d
69
03
a6
|
a6
03
69
7
d
)
mtctr
r11
.*
(
e9
82
80
70
|
70
80
82
e9
)
ld
r12
,-
32656
\
(
r2
\
)
.*
(
7
d
89
03
a6
|
a6
03
89
7
d
)
mtctr
r12
.*
(
e8
42
80
78
|
78
80
42
e8
)
ld
r2
,-
32648
\
(
r2
\
)
.*
(
4
e
80
04
21
|
21
04
80
4
e
)
bctrl
.*
(
e9
61
00
20
|
20
00
61
e9
)
ld
r11
,
32
\
(
r1
\
)
...
...
@@ -28,7 +28,7 @@ Disassembly of section \.text:
.*
(
7
d
68
03
a6
|
a6
03
68
7
d
)
mtlr
r11
.*
(
4
e
80
00
20
|
20
00
80
4
e
)
blr
.*
<
_start
>:
.*
<
\
.
_start
>:
.*
(
38
62
80
08
|
08
80
62
38
)
addi
r3
,
r2
,-
32760
.*
(
4
b
ff
ff
b5
|
b5
ff
ff
4
b
)
bl
.*
.*
(
60
00
00
00
|
00
00
00
60
)
nop
...
...
@@ -51,22 +51,23 @@ Disassembly of section \.text:
.*
(
89
4
d
90
60
|
60
90
4
d
89
)
lbz
r10
,-
28576
\
(
r13
\
)
.*
(
3
d
2
d
00
00
|
00
00
2
d
3
d
)
addis
r9
,
r13
,
0
.*
(
99
49
90
68
|
68
90
49
99
)
stb
r10
,-
28568
\
(
r9
\
)
.*
(
00
00
00
00
|
28
02
01
00
)
.*
.*
(
00
01
02
28
|
00
00
00
00
)
.*
.*
(
00
00
00
00
|
40
02
01
00
)
.*
.*
(
00
01
02
40
|
00
00
00
00
)
.*
.*
<
__glink_PLTresolve
>:
.*
(
7
d
88
02
a6
|
a6
02
88
7
d
)
mflr
r12
.*
(
42
9
f
00
05
|
05
00
9
f
42
)
bcl
20
,
4
\
*
cr7
\
+
so
,.*
.*
(
7
d
68
02
a6
|
a6
02
68
7
d
)
mflr
r11
.*
(
e8
4
b
ff
f0
|
f0
ff
4
b
e8
)
ld
r2
,-
16
\
(
r11
\
)
.*
(
7
d
88
03
a6
|
a6
03
88
7
d
)
mtlr
r12
.*
(
7
d
82
5
a
14
|
14
5
a
82
7
d
)
add
r12
,
r2
,
r11
.*
(
e9
6
c
00
00
|
00
00
6
c
e9
)
ld
r11
,
0
\
(
r12
\
)
.*
(
e8
4
c
00
08
|
08
00
4
c
e8
)
ld
r2
,
8
\
(
r12
\
)
.*
(
7
d
69
03
a6
|
a6
03
69
7
d
)
mtctr
r11
.*
(
e9
6
c
00
10
|
10
00
6
c
e9
)
ld
r11
,
16
\
(
r12
\
)
.*
(
7
d
62
5
a
14
|
14
5
a
62
7
d
)
add
r11
,
r2
,
r11
.*
(
e9
8
b
00
00
|
00
00
8
b
e9
)
ld
r12
,
0
\
(
r11
\
)
.*
(
e8
4
b
00
08
|
08
00
4
b
e8
)
ld
r2
,
8
\
(
r11
\
)
.*
(
7
d
89
03
a6
|
a6
03
89
7
d
)
mtctr
r12
.*
(
e9
6
b
00
10
|
10
00
6
b
e9
)
ld
r11
,
16
\
(
r11
\
)
.*
(
4
e
80
04
20
|
20
04
80
4
e
)
bctr
.*
(
60
00
00
00
|
00
00
00
60
)
nop
.*
(
60
00
00
00
|
00
00
00
60
)
nop
.*
(
60
00
00
00
|
00
00
00
60
)
nop
.*
<
__tls_get_addr_opt
@plt
>:
.*
(
38
00
00
00
|
00
00
00
38
)
li
r0
,
0
.*
(
4
b
ff
ff
c4
|
c4
ff
ff
4
b
)
b
.*
ld/testsuite/ld-powerpc/tlsexetoc.g
View file @
2e3744e9
...
...
@@ -7,7 +7,7 @@
.*
Contents of section \.got:
.* (00000000|
c0850110) (100185c0
|00000000) 00000000 00000000 .*
.* (00000000|
d8850110) (100185d8
|00000000) 00000000 00000000 .*
.* 00000000 00000000 00000000 00000000 .*
.* 00000000 00000000 (00000000|01000000) (00000001|00000000) .*
.* 00000000 00000000 (00000000|01000000) (00000001|00000000) .*
...
...
ld/testsuite/ld-powerpc/tlsexetoc.r
View file @
2e3744e9
#source: tlslib.s
#source: tlstoc.s
#as: -a64
#ld:
#ld:
#readelf: -WSsrl
#target: powerpc64*-*-*
...
...
@@ -20,6 +20,7 @@ Section Headers:
+
\
[[
0-9
]
+
\
]
\
.tdata
+
PROGBITS
.
*
0+38
0
+
WAT
+0
+0
+8
+
\
[[
0-9
]
+
\
]
\
.tbss
+
NOBITS
.
*
0+38
0
+
WAT
+0
+0
+8
+
\
[[
0-9
]
+
\
]
\
.dynamic
+
DYNAMIC
.
*
0+160
10
+
WA
+4
+0
+8
+
\
[[
0-9
]
+
\
]
\
.opd
.
*
+
\
[[
0-9
]
+
\
]
\
.got
+
PROGBITS
.
*
0+58
08
+
WA
+0
+0
+8
+
\
[[
0-9
]
+
\
]
\
.plt
+
.
*
+
\
[[
0-9
]
+
\
]
\
.shstrtab
+
.
*
...
...
@@ -44,11 +45,11 @@ Program Headers:
Section
to
Segment
mapping
:
+
Segment
Sections
\
.
\
.
\
.
+0
+
+
+01
+
\
.interp
+02
+
\
.interp
\
.hash
\
.dynsym
\
.dynstr
\
.rela
\
.dyn
\
.rela
\
.plt
\
.text
+03
+
\
.tdata
\
.dynamic
\
.
got
\
.plt
+04
+
\
.dynamic
+05
+
\
.tdata
\
.tbss
+01
+
\
.interp
*
+02
+
\
.interp
\
.hash
\
.dynsym
\
.dynstr
\
.rela
\
.dyn
\
.rela
\
.plt
\
.text
*
+03
+
\
.tdata
\
.dynamic
\
.
opd
\
.got
\
.plt
*
+04
+
\
.dynamic
*
+05
+
\
.tdata
\
.tbss
*
Relocation
section
'\.rela\.dyn'
at
offset
.
*
contains
3
entries
:
+
Offset
+
Info
+
Type
+
Symbol
's Value +Symbol'
s
Name
\
+
Addend
...
...
@@ -62,29 +63,30 @@ Relocation section '\.rela\.plt' at offset .* contains 1 entries:
Symbol
table
'\.dynsym'
contains
[
0-9
]
+
entries
:
+
Num
:
+
Value
+
Size
+
Type
+
Bind
+
Vis
+
Ndx
+
Name
.
*
NOTYPE
+
LOCAL
+
DEFAULT
+
UND
.
*
NOTYPE
+
LOCAL
+
DEFAULT
+
UND
*
.
*
TLS
+
GLOBAL
+
DEFAULT
+
UND
gd
.
*
TLS
+
GLOBAL
+
DEFAULT
+
UND
ld
.
*
NOTYPE
+
GLOBAL
+
DEFAULT
+1
2
__
bss_start
.
*
NOTYPE
+
GLOBAL
+
DEFAULT
+1
3
__
bss_start
.
*
FUNC
+
GLOBAL
+
DEFAULT
+
UND
__
tls_get_addr_opt
.
*
NOTYPE
+
GLOBAL
+
DEFAULT
+1
1
_
edata
.
*
NOTYPE
+
GLOBAL
+
DEFAULT
+1
2
_
end
.
*
NOTYPE
+
GLOBAL
+
DEFAULT
+1
2
_
edata
.
*
NOTYPE
+
GLOBAL
+
DEFAULT
+1
3
_
end
Symbol
table
'\.symtab'
contains
[
0-9
]
+
entries
:
+
Num
:
+
Value
+
Size
+
Type
+
Bind
+
Vis
+
Ndx
+
Name
.
*
NOTYPE
+
LOCAL
+
DEFAULT
+
UND
.
*
SECTION
+
LOCAL
+
DEFAULT
+1
.
*
SECTION
+
LOCAL
+
DEFAULT
+2
.
*
SECTION
+
LOCAL
+
DEFAULT
+3
.
*
SECTION
+
LOCAL
+
DEFAULT
+4
.
*
SECTION
+
LOCAL
+
DEFAULT
+5
.
*
SECTION
+
LOCAL
+
DEFAULT
+6
.
*
SECTION
+
LOCAL
+
DEFAULT
+7
.
*
SECTION
+
LOCAL
+
DEFAULT
+8
.
*
SECTION
+
LOCAL
+
DEFAULT
+9
.
*
SECTION
+
LOCAL
+
DEFAULT
+10
.
*
SECTION
+
LOCAL
+
DEFAULT
+11
.
*
SECTION
+
LOCAL
+
DEFAULT
+12
.
*
NOTYPE
+
LOCAL
+
DEFAULT
+
UND
*
.
*
SECTION
+
LOCAL
+
DEFAULT
+1
*
.
*
SECTION
+
LOCAL
+
DEFAULT
+2
*
.
*
SECTION
+
LOCAL
+
DEFAULT
+3
*