LibC - 윈디하나의 솔라나라

목차

libc.so

명령셋

HW1

HW2

HW3

libc.so 마운트와 해제

lofs(7FS)(루프백 가상 파일 시스템)를 사용해 마운트를 작업할 수 있다.
root@wl ~ # df -k
/usr/lib/libc/libc_hwcap1.so.1
                     50423874 7450881 42468755    15%    /lib/libc.so.1
root@wl ~ # ls -al /usr/lib/libc/libc_hwcap1.so.1 /lib/libc.so.1 1)
-rwxr-xr-x   1 root     bin      1087992  9월 18일  02:00 /lib/libc.so.1
-rwxr-xr-x   1 root     bin      1087992  9월 18일  02:00 /usr/lib/libc/libc_hwcap1.so.1
root@wl ~ # digest -a md5 /usr/lib/libc/libc_hwcap1.so.1
30fc278a5f38f9141be68b1d83ae70f0
root@wl ~ # digest -a md5 /lib/libc.so.1
30fc278a5f38f9141be68b1d83ae70f0
root@wl ~ # umount /lib/libc.so.1 2)
root@wl ~ # ls -al /usr/lib/libc/libc_hwcap1.so.1 /lib/libc.so.1 3)
-rwxr-xr-x   1 root     bin      1083760  9월 18일  01:59 /lib/libc.so.1
-rwxr-xr-x   1 root     bin      1087992  9월 18일  02:00 /usr/lib/libc/libc_hwcap1.so.1
root@wl ~ # mount -O -F lofs /usr/lib/libc/libc_hwcap1.so.1 /lib/libc.so.1 4)
1) 두 파일이 같은 파일임을 알 수 있다. 시스템에 따라 /usr/lib/libc/libc_hwcap2.so.1 와 연결되어있을 수 있다. 그렇다면 이 예제에서는 파라메터를 바꿔서 시험해봐야 한다.
2) 마운트를 해제한다.
3) 두 파일이 다른 파일임을 알 수 있다. 파일 용량부터 차이난다. 원래 있는 파일을 지우지 않기 위해 lofs를 이용해 마운트한 것이다.
4) 다시 원래대로 복구한다.

솔라리스의 라이브러리

glibc

솔라리스와 유사하게 GLIBC 에도 비슷한 기능이 있다. 자세한건 x86-64 psABI를 읽어보자. RHEL 9 부터는 x86-64-v2 부터 사용할 수 있다고 한다.
레벨 명     CPU 기능                                                                    지원아키텍처
----------  --------------------------------------------------------------------------  ------------
x86-64      CMOV, CX8, FPU, FXSR, MMX, OSFXSR, SCE, SSE, SSE2                           All x64
            cmov, cmpxchg8b, fld, fxsave, emms, fxsave, syscall, cvtss2si, cvtpi2pd

x86-64-v2   CMPXCHG16B, LAHF-SAHF, POPCNT, SSE3, SSE4_1, SSE4_2, SSSE3                  Nehalem, Jaguar
            cmpxchg16b, lahf, popcnt, addsubpd, blendpd, pcmpestri, phaddd

x86-64-v3   AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, OSXSAVE                     Haswell, Excavator
            vzeroall, vpermd, andn, bzhi, vcvtph2ps, vfmadd132pd, lzcnt, movbe, xgetbv

x86-64-v4   AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL                             N/A 1)
            kmovw, vdbpsadbw, vplzcntd, vpmullq, n/a
1) 현재, 제시된 CPU 기능을 모두 지원하는 아키텍처를 지정할 수는 없다. (AVX-512 의 파편화가 심하다) 10세대 인텔 코어 프로세서면 거의 지원한다. 최신 리눅스 시스템에서 아래 명령어를 사용하면 현재 지원되는 시스템의 레벨을 알 수 있다.
$ /lib/ld-linux-x86-64.so.2 --help
참고로 윈도에서는 coreinfo 를 사용해 볼 수 있다. https://learn.microsoft.com/en-us/sysinternals/downloads/coreinfo
RSS ATOM XHTML 5 CSS3