# REQUIRES: x86
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t.o

# RUN: %lld -lSystem --icf=all %t.o -o %t
# RUN: dsymutil -s %t | FileCheck %s -DDIR=%t -DSRC_PATH=%t.o

## This should include no N_FUN entry for _baz (which is ICF'd into _bar),
## but it does include a SECT EXT entry.
## NOTE: We do not omit the N_FUN entry for _bar even though it is of size zero.
##       Only folded symbols get omitted.
## NOTE: Unlike ld64, we also omit the N_FUN entry for _baz2.
# CHECK:      (N_SO         ) 00      0000   0000000000000000  '/tmp{{[/\\]}}test.cpp'
# CHECK-NEXT: (N_OSO        ) 03      0001   {{.*}} '[[SRC_PATH]]'
# CHECK-NEXT: (N_FUN        ) 01      0000   [[#%.16x,MAIN:]]  '_main'
# CHECK-NEXT: (N_FUN        ) 00      0000   000000000000000b{{$}}
# CHECK-NEXT: (N_FUN        ) 01      0000   [[#%.16x,BAR:]]   '_bar'
# CHECK-NEXT: (N_FUN        ) 00      0000   0000000000000000{{$}}
# CHECK-NEXT: (N_FUN        ) 01      0000   [[#BAR]]          '_bar2'
# CHECK-NEXT: (N_FUN        ) 00      0000   0000000000000001{{$}}
# CHECK-NEXT: (N_SO         ) 01      0000   0000000000000000{{$}}
# CHECK-DAG:  (     SECT EXT) 01      0000   [[#MAIN]]         '_main'
# CHECK-DAG:  (     SECT EXT) 01      0000   [[#BAR]]          '_bar'
# CHECK-DAG:  (     SECT EXT) 01      0000   [[#BAR]]          '_bar2'
# CHECK-DAG:  (     SECT EXT) 01      0000   [[#BAR]]          '_baz'
# CHECK-DAG:  (     SECT EXT) 01      0000   [[#BAR]]          '_baz2'
# CHECK-DAG:  (       {{.*}}) {{[0-9]+}}                 0010   {{[0-9a-f]+}}      '__mh_execute_header'
# CHECK-DAG:  (       {{.*}}) {{[0-9]+}}                 0100   0000000000000000   'dyld_stub_binder'
# CHECK-EMPTY:

.text
.globl _bar, _bar2, _baz, _baz2, _main

.subsections_via_symbols

_bar:
_bar2:
  ret

_baz:
_baz2:
  ret

_main:
Lfunc_begin0:
  call _bar
  call _baz
  ret
Lfunc_end0:

.section  __DWARF,__debug_str,regular,debug
  .asciz  "test.cpp"             ## string offset=0
  .asciz  "/tmp"                 ## string offset=9
.section  __DWARF,__debug_abbrev,regular,debug
Lsection_abbrev:
  .byte  1                       ## Abbreviation Code
  .byte  17                      ## DW_TAG_compile_unit
  .byte  1                       ## DW_CHILDREN_yes
  .byte  3                       ## DW_AT_name
  .byte  14                      ## DW_FORM_strp
  .byte  27                      ## DW_AT_comp_dir
  .byte  14                      ## DW_FORM_strp
  .byte  17                      ## DW_AT_low_pc
  .byte  1                       ## DW_FORM_addr
  .byte  18                      ## DW_AT_high_pc
  .byte  6                       ## DW_FORM_data4
  .byte  0                       ## EOM(1)
  .byte  0                       ## EOM(2)
  .byte  0                       ## EOM(3)
.section  __DWARF,__debug_info,regular,debug
.set Lset0, Ldebug_info_end0-Ldebug_info_start0 ## Length of Unit
  .long  Lset0
Ldebug_info_start0:
  .short  4                       ## DWARF version number
.set Lset1, Lsection_abbrev-Lsection_abbrev ## Offset Into Abbrev. Section
  .long  Lset1
  .byte  8                       ## Address Size (in bytes)
  .byte  1                       ## Abbrev [1] 0xb:0x48 DW_TAG_compile_unit
  .long  0                       ## DW_AT_name
  .long  9                       ## DW_AT_comp_dir
  .quad  Lfunc_begin0            ## DW_AT_low_pc
.set Lset3, Lfunc_end0-Lfunc_begin0     ## DW_AT_high_pc
  .long  Lset3
  .byte  0                       ## End Of Children Mark
Ldebug_info_end0:
