Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Fix jump/call targets
Since ac7ceb3 `[Hexagon][llvm-objdump] Improve disassembly of
Hexagon bundles`, llvm-objdump includes detail about call targets, so we
should expect to see those now.
  • Loading branch information
androm3da committed Jul 20, 2025
commit b7e019ba448a7fa475fed1180f5a9d3cfff60c5e
26 changes: 13 additions & 13 deletions lld/test/ELF/hexagon-thunk-range-b22rel.s
Original file line number Diff line number Diff line change
Expand Up @@ -68,25 +68,25 @@ target_beyond_range_min:
## Verify thunk generation for targets beyond B22_PCREL range
# CHECK: <__hexagon_thunk_target_within_range_min_from_.text.thunk>:
# CHECK-NEXT: 200b4: { immext(#0x900000)
# CHECK-NEXT: jump 0x9200cc }
# CHECK-NEXT: jump 0x9200cc <target_within_range_min> }

# CHECK: <__hexagon_thunk_target_beyond_range_min_from_.text.thunk>:
# CHECK-NEXT: 200bc: { immext(#0x1100000)
# CHECK-NEXT: jump 0x11200c8 }
# CHECK-NEXT: jump 0x11200c8 <target_beyond_range_min> }

# CHECK: <__hexagon_thunk_target_multiple_calls_from_.text.thunk>:
# CHECK-NEXT: 200c4: { immext(#0x8fffc0)
# CHECK-NEXT: jump 0x9200c0 }
# CHECK-NEXT: jump 0x9200c0 <target_multiple_calls> }

## Verify _start calls - some direct, some via thunks
# CHECK: <_start>:
# CHECK-NEXT: 200cc: { call 0x8200ac }
# CHECK-NEXT: { call 0x8200b8 }
# CHECK-NEXT: { call 0x200b4 }
# CHECK-NEXT: { call 0x200bc }
# CHECK-NEXT: { call 0x200c4 }
# CHECK-NEXT: { call 0x200c4 }
# CHECK-NEXT: { call 0x200ec }
# CHECK-NEXT: 200cc: { call 0x8200ac <target_within_range_max> }
# CHECK-NEXT: { call 0x8200b8 <target_beyond_range> }
# CHECK-NEXT: { call 0x200b4 <__hexagon_thunk_target_within_range_min_from_.text.thunk> }
# CHECK-NEXT: { call 0x200bc <__hexagon_thunk_target_beyond_range_min_from_.text.thunk> }
# CHECK-NEXT: { call 0x200c4 <__hexagon_thunk_target_multiple_calls_from_.text.thunk> }
# CHECK-NEXT: { call 0x200c4 <__hexagon_thunk_target_multiple_calls_from_.text.thunk> }
# CHECK-NEXT: { call 0x200ec <target_close> }

# CHECK: <target_close>:
# CHECK-NEXT: 200ec: { jumpr r31 }
Expand All @@ -96,7 +96,7 @@ target_beyond_range_min:
# CHECK-NEXT: 8200ac: { jumpr r31 }

# CHECK: <target_beyond_range>:
# CHECK-NEXT: 8200b8: { call 0x8200ac }
# CHECK-NEXT: 8200b8: { call 0x8200ac <target_within_range_max> }
# CHECK-NEXT: { jumpr r31 }

# CHECK: <target_multiple_calls>:
Expand All @@ -105,10 +105,10 @@ target_beyond_range_min:
## Verify targets in negative section and thunk for calling back to main section
# CHECK: <__hexagon_thunk__from_.text.thunk>:
# CHECK-NEXT: 9200c4: { immext(#0xff700000)
# CHECK-NEXT: jump 0x200cc }
# CHECK-NEXT: jump 0x200cc <_start> }

# CHECK: <target_within_range_min>:
# CHECK-NEXT: 9200cc: { call 0x9200c4 }
# CHECK-NEXT: 9200cc: { call 0x9200c4 <__hexagon_thunk__from_.text.thunk> }
# CHECK-NEXT: { jumpr r31 }

# CHECK: <target_beyond_range_min>:
Expand Down
6 changes: 3 additions & 3 deletions lld/test/ELF/hexagon-thunk-range-gdplt.s
Original file line number Diff line number Diff line change
Expand Up @@ -52,16 +52,16 @@ tls_var_distant:
# CHECK-NEXT: r2 = add(pc,##0x420130) }
# CHECK-NEXT: { immext(#0xfffeffc0)
# CHECK-NEXT: r0 = add(r2,##-0x10018) }
# CHECK-NEXT: { call 0x410360 }
# CHECK-NEXT: { call 0x410360 <__tls_get_addr@plt> }
# CHECK-NEXT: { immext(#0xfffeffc0)
# CHECK-NEXT: r0 = add(r2,##-0x10010) }
# CHECK-NEXT: { call 0x410360 }
# CHECK-NEXT: { call 0x410360 <__tls_get_addr@plt> }
# CHECK-NEXT: { jumpr r31 }

# CHECK: <more_code>:
# CHECK-NEXT: 4102f8: { immext(#0xfffeffc0)
# CHECK-NEXT: r0 = add(r2,##-0x10008) }
# CHECK-NEXT: { call 0x410360 }
# CHECK-NEXT: { call 0x410360 <__tls_get_addr@plt> }
# CHECK-NEXT: { jumpr r31 }

## Verify PLT entries are created for TLS
Expand Down
6 changes: 3 additions & 3 deletions lld/test/ELF/hexagon-thunk-range-plt.s
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@ _start:

# CHECK: Disassembly of section .text:
# CHECK: <_start>:
# CHECK-NEXT: 2021c: { call 0x220250 }
# CHECK-NEXT: { call 0x220260 }
# CHECK-NEXT: { call 0x220270 }
# CHECK-NEXT: 2021c: { call 0x220250 <extern_within_range@plt> }
# CHECK-NEXT: { call 0x220260 <extern_beyond_range@plt> }
# CHECK-NEXT: { call 0x220270 <extern_close@plt> }
# CHECK-NEXT: { jumpr r31 }

## Verify PLT header and entries are created with exact addresses
Expand Down
46 changes: 23 additions & 23 deletions lld/test/ELF/hexagon-thunks-packets.s
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

# CHECK-NONPIC: 000200b4 <__hexagon_thunk_myfn_a_from_.text.thunk>:
# CHECK-NONPIC: { immext(#0x1000040)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use -NEXT: whenever applicable to make FileCheck errors better when things go off

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed, thanks.

# CHECK-NONPIC: jump 0x1020110 }
# CHECK-NONPIC: jump 0x1020110 <myfn_a> }

# CHECK-PIC: 00010150 <__hexagon_thunk_myfn_a_from_.text.thunk>:
# CHECK-PIC-NEXT: { immext(#0x1000040)
Expand All @@ -40,33 +40,33 @@ myfn_b:
main:
{ r0 = #0
call myfn_a }
# CHECK-PIC: { call 0x10150
# CHECK-NONPIC: { call 0x200b4
# CHECK-PIC: { call 0x10150 <__hexagon_thunk_myfn_a_from_.text.thunk>
# CHECK-NONPIC: { call 0x200b4 <__hexagon_thunk_myfn_a_from_.text.thunk>
# CHECK-NEXT: r0 = #0x0 }
call myfn_a
# CHECK-PIC: call 0x10150
# CHECK-NONPIC: call 0x200b4
# CHECK-PIC: call 0x10150 <__hexagon_thunk_myfn_a_from_.text.thunk>
# CHECK-NONPIC: call 0x200b4 <__hexagon_thunk_myfn_a_from_.text.thunk>
call myfn_b
# CHECK-PIC-NEXT: call 0x1015c
# CHECK-NONPIC-NEXT: call 0x200bc
# CHECK-PIC-NEXT: call 0x1015c <myfn_b>
# CHECK-NONPIC-NEXT: call 0x200bc <myfn_b>

{ r2 = add(r0, r1)
if (p0) call #myfn_b
if (!p0) call #myfn_a }
# CHECK-PIC-NEXT: { if (p0) call 0x1015c
# CHECK-PIC-NEXT: if (!p0) call 0x10150
# CHECK-NONPIC-NEXT: { if (p0) call 0x200bc
# CHECK-NONPIC-NEXT: if (!p0) call 0x200b4
# CHECK-PIC-NEXT: { if (p0) call 0x1015c <myfn_b>
# CHECK-PIC-NEXT: if (!p0) call 0x10150 <__hexagon_thunk_myfn_a_from_.text.thunk>
# CHECK-NONPIC-NEXT: { if (p0) call 0x200bc <myfn_b>
# CHECK-NONPIC-NEXT: if (!p0) call 0x200b4 <__hexagon_thunk_myfn_a_from_.text.thunk>

# CHECK-NEXT: r2 = add(r0,r1) }

{ r2 = add(r0, r1)
if (p0) call #myfn_a
if (!p0) call #myfn_a }
# CHECK-PIC-NEXT: { if (p0) call 0x10150
# CHECK-PIC-NEXT: if (!p0) call 0x10150
# CHECK-NONPIC-NEXT: { if (p0) call 0x200b4
# CHECK-NONPIC-NEXT: if (!p0) call 0x200b4
# CHECK-PIC-NEXT: { if (p0) call 0x10150 <__hexagon_thunk_myfn_a_from_.text.thunk>
# CHECK-PIC-NEXT: if (!p0) call 0x10150 <__hexagon_thunk_myfn_a_from_.text.thunk>
# CHECK-NONPIC-NEXT: { if (p0) call 0x200b4 <__hexagon_thunk_myfn_a_from_.text.thunk>
# CHECK-NONPIC-NEXT: if (!p0) call 0x200b4 <__hexagon_thunk_myfn_a_from_.text.thunk>
# CHECK-NEXT: r2 = add(r0,r1) }

{ r2 = add(r0, r1)
Expand All @@ -83,18 +83,18 @@ main:
if (r0 <= #0) jump:t #myfn_a
p1 = cmp.eq(r0, #0); if (p1.new) jump:nt #myfn_a }
# CHECK-NONPIC-NEXT: { if (r0<=#0) jump:t 0x200b4
# CHECK-NONPIC-NEXT: p1 = cmp.eq(r0,#0x0); if (p1.new) jump:nt 0x200b4
# CHECK-NONPIC-NEXT: p1 = cmp.eq(r0,#0x0); if (p1.new) jump:nt 0x200b4 <__hexagon_thunk_myfn_a_from_.text.thunk>
# CHECK-PIC-NEXT: { if (r0<=#0) jump:t 0x10150
# CHECK-PIC-NEXT: p1 = cmp.eq(r0,#0x0); if (p1.new) jump:nt 0x10150
# CHECK-PIC-NEXT: p1 = cmp.eq(r0,#0x0); if (p1.new) jump:nt 0x10150 <__hexagon_thunk_myfn_a_from_.text.thunk>
# CHECK-NEXT: r2 = add(r0,r1)
# CHECK-NEXT: r4 = r5 }

{r0 = #0; jump #myfn_a}
# CHECK-PIC-NEXT: { r0 = #0x0 ; jump 0x10150 }
# CHECK-NONPIC-NEXT: { r0 = #0x0 ; jump 0x200b4 }
# CHECK-PIC-NEXT: { r0 = #0x0 ; jump 0x10150 <__hexagon_thunk_myfn_a_from_.text.thunk> }
# CHECK-NONPIC-NEXT: { r0 = #0x0 ; jump 0x200b4 <__hexagon_thunk_myfn_a_from_.text.thunk> }
{r0 = #0; jump #myfn_b}
# CHECK-PIC-NEXT: { r0 = #0x0 ; jump 0x1015c }
# CHECK-NONPIC-NEXT: { r0 = #0x0 ; jump 0x200bc }
# CHECK-PIC-NEXT: { r0 = #0x0 ; jump 0x1015c <myfn_b> }
# CHECK-NONPIC-NEXT: { r0 = #0x0 ; jump 0x200bc <myfn_b> }
jumpr r31
.size main, .-main

Expand All @@ -109,12 +109,12 @@ myfn_a:
.size myfn_a, .-myfn_a

# CHECK-NONPIC: 01020110 <myfn_a>:
# CHECK-NONPIC-NEXT: { r0 = #0x0 ; jump 0x1020118 }
# CHECK-NONPIC-NEXT: { r0 = #0x0 ; jump 0x1020118 <__hexagon_thunk_myfn_b_from_.text.thunk> }
# CHECK-NONPIC-NEXT: { jumpr r31 }

# CHECK-NONPIC: 01020118 <__hexagon_thunk_myfn_b_from_.text.thunk>:
# CHECK-NONPIC-NEXT: { immext(#0xfeffff80)
# CHECK-NONPIC-NEXT: jump 0x200bc }
# CHECK-NONPIC-NEXT: jump 0x200bc <myfn_b> }

# CHECK-PIC: 010101b8 <__hexagon_thunk_myfn_b_from_.text.thunk>:
# CHECK-PIC-NEXT: { immext(#0xfeffff80)
Expand Down
6 changes: 3 additions & 3 deletions lld/test/ELF/hexagon-thunks.s
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,15 @@ myfn:

# CHECK: <__hexagon_thunk_myfn_from_.text.thunk>:
# CHECK-NONPIC-NEXT: 200b4: { immext(#0x1000000)
# CHECK-NONPIC-NEXT: jump 0x10200bc }
# CHECK-NONPIC-NEXT: jump 0x10200bc <myfn> }
# CHECK-PIC-NEXT: 200b4: { immext(#0x1000000)
# CHECK-PIC-NEXT: r14 = add(pc,##0x1000008) }
# CHECK-PIC-NEXT: { jumpr r14 }

# CHECK-NONPIC: <main>:
# CHECK-NONPIC-NEXT: 200bc: { call 0x200b4 }
# CHECK-NONPIC-NEXT: 200bc: { call 0x200b4 <__hexagon_thunk_myfn_from_.text.thunk> }
# CHECK-PIC: <main>:
# CHECK-PIC-NEXT: 200c0: { call 0x200b4 }
# CHECK-PIC-NEXT: 200c0: { call 0x200b4 <__hexagon_thunk_myfn_from_.text.thunk> }
# CHECK-NEXT: { jumpr r31 }

# CHECK: Disassembly of section .text_high:
Expand Down