Skip to content

Commit 56c11f8

Browse files
committed
[Triple][CodeGen] Fix Triple::isTargetEHABICompatible() for NetBSD
Even for EABI, NetBSD uses DWARF EH, not EHABI. This change matches the Clang frontend behavior, and fixes link errors caused by incorrect references to __cxa_end_cleanup rather than _Unwind_Resume.
1 parent 4fb81f1 commit 56c11f8

File tree

3 files changed

+20
-14
lines changed

3 files changed

+20
-14
lines changed

llvm/include/llvm/TargetParser/Triple.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -914,7 +914,7 @@ class Triple {
914914
getEnvironment() == Triple::GNUEABIHFT64 ||
915915
getEnvironment() == Triple::OpenHOS ||
916916
getEnvironment() == Triple::MuslEABIHF || isAndroid()) &&
917-
isOSBinFormatELF();
917+
isOSBinFormatELF() && !isOSNetBSD();
918918
}
919919

920920
// ARM EABI is the bare-metal EABI described in ARM ABI documents and

llvm/test/CodeGen/ARM/eh-resume.ll

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
; RUN: llc < %s -mtriple=armv7k-apple-watchos -arm-atomic-cfg-tidy=0 | FileCheck %s -check-prefix=WATCHABI
55
; RUN: llc < %s -mtriple=armv7-none-gnueabihf -arm-atomic-cfg-tidy=0 | FileCheck %s -check-prefix=EABI
66
; RUN: llc < %s -mtriple=armv7-none-none -arm-atomic-cfg-tidy=0 | FileCheck %s -check-prefix=ABI
7+
; RUN: llc < %s -mtriple=armv7-netbsd-none -arm-atomic-cfg-tidy=0 | FileCheck %s -check-prefix=NETBSD
8+
; RUN: llc < %s -mtriple=armv7-netbsd-eabihf -arm-atomic-cfg-tidy=0 | FileCheck %s -check-prefix=NETBSD
79

810
declare void @func()
911

@@ -27,3 +29,4 @@ lpad:
2729
; WATCHABI: __Unwind_Resume
2830
; EABI: __cxa_end_cleanup
2931
; ABI: _Unwind_Resume
32+
; NETBSD: _Unwind_Resume

llvm/test/CodeGen/ARM/ehabi.ll

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -258,31 +258,34 @@ declare void @_ZSt9terminatev()
258258
; DWARF-V7-FP: .cfi_startproc
259259
; DWARF-V7-FP: .cfi_personality 0, __gxx_personality_v0
260260
; DWARF-V7-FP: .cfi_lsda 0, .Lexception0
261-
; DWARF-V7-FP: push {r11, lr}
262-
; DWARF-V7-FP: .cfi_def_cfa_offset 8
261+
; DWARF-V7-FP: push {r4, r10, r11, lr}
262+
; DWARF-V7-FP: .cfi_def_cfa_offset 16
263263
; DWARF-V7-FP: .cfi_offset lr, -4
264264
; DWARF-V7-FP: .cfi_offset r11, -8
265-
; DWARF-V7-FP: mov r11, sp
266-
; DWARF-V7-FP: .cfi_def_cfa_register r11
265+
; DWARF-V7-FP: .cfi_offset r10, -12
266+
; DWARF-V7-FP: .cfi_offset r4, -16
267+
; DWARF-V7-FP: add r11, sp, #8
268+
; DWARF-V7-FP: .cfi_def_cfa r11, 8
267269
; DWARF-V7-FP: vpush {d8, d9, d10, d11, d12}
268-
; DWARF-V7-FP: .cfi_offset d12, -16
269-
; DWARF-V7-FP: .cfi_offset d11, -24
270-
; DWARF-V7-FP: .cfi_offset d10, -32
271-
; DWARF-V7-FP: .cfi_offset d9, -40
270+
; DWARF-V7-FP: .cfi_offset d12, -24
271+
; DWARF-V7-FP: .cfi_offset d11, -32
272+
; DWARF-V7-FP: .cfi_offset d10, -40
273+
; DWARF-V7-FP: .cfi_offset d9, -48
274+
; DWARF-V7-FP: .cfi_offset d8, -56
272275
; DWARF-V7-FP: sub sp, sp, #24
273-
; DWARF-V7-FP: sub sp, r11, #40
276+
; DWARF-V7-FP: sub sp, r11, #48
274277
; DWARF-V7-FP: vpop {d8, d9, d10, d11, d12}
275-
; DWARF-V7-FP: pop {r11, pc}
278+
; DWARF-V7-FP: pop {r4, r10, r11, pc}
276279
; DWARF-V7-FP: .cfi_endproc
277280

278281
; DWARF-V7-FP-ELIM-LABEL: _Z4testiiiiiddddd:
279282
; DWARF-V7-FP-ELIM: .cfi_startproc
280283
; DWARF-V7-FP-ELIM: .cfi_personality 0, __gxx_personality_v0
281284
; DWARF-V7-FP-ELIM: .cfi_lsda 0, .Lexception0
282-
; DWARF-V7-FP-ELIM: push {r11, lr}
285+
; DWARF-V7-FP-ELIM: push {r4, lr}
283286
; DWARF-V7-FP-ELIM: .cfi_def_cfa_offset 8
284287
; DWARF-V7-FP-ELIM: .cfi_offset lr, -4
285-
; DWARF-V7-FP-ELIM: .cfi_offset r11, -8
288+
; DWARF-V7-FP-ELIM: .cfi_offset r4, -8
286289
; DWARF-V7-FP-ELIM: vpush {d8, d9, d10, d11, d12}
287290
; DWARF-V7-FP-ELIM: .cfi_offset d12, -16
288291
; DWARF-V7-FP-ELIM: .cfi_offset d11, -24
@@ -292,7 +295,7 @@ declare void @_ZSt9terminatev()
292295
; DWARF-V7-FP-ELIM: .cfi_def_cfa_offset 72
293296
; DWARF-V7-FP-ELIM: add sp, sp, #24
294297
; DWARF-V7-FP-ELIM: vpop {d8, d9, d10, d11, d12}
295-
; DWARF-V7-FP-ELIM: pop {r11, pc}
298+
; DWARF-V7-FP-ELIM: pop {r4, pc}
296299
; DWARF-V7-FP-ELIM: .cfi_endproc
297300

298301
; DWARF-WIN-FP-ELIM-LABEL: _Z4testiiiiiddddd:

0 commit comments

Comments
 (0)