0

I have a class which has many members in it

 int latest_encode_usage_ = 67;
  int perf_target_framerate_ = 0;
  std::map<uint8_t, uint16_t> pre_dlbitrate_;
#if defined(WEBRTC_TRANSCODE_CASE)
    bool is_screen_share_;
#endif

and I have defined WEBRTC_TRANSCODE_CASE in build.gn

defines += ["WEBRTC_TRANSCODE_CASE"]

so the is_screen_share_ is visible in the class, I compile this code with RelWithDebInfo and got a shared library called liba.so, then I remove the preprocessor directives

  bool is_perf_adaption_avalaible_;

  int latest_encode_usage_ = 67;
  int perf_target_framerate_ = 0;
  std::map<uint8_t, uint16_t> pre_dlbitrate_;
  bool is_screen_share_

and compile the code with RelWithDebInfo got libb.so, when I execute the command diff <(objdump -d liba.so) <(objdump -d libb.so) and got

1714248c1714248
<   7225b9: bf b8 0f 00 00          mov    $0xfb8,%edi
---
>   7225b9: bf c0 0f 00 00          mov    $0xfc0,%edi

, it seems 8 bytes different, but why ? I just don't understand. It's part of liba.so's objdump:

0000000000722580 <_ZN6webrtc24CreateVideoStreamEncoderEjPNS_26VideoStreamEncoderObserverERKNS_26VideoStreamEncoderSettingsENS_18VideoEncoderConfig11ContentTypeE>:
  722580: 55                    push   %rbp
  722581: 48 89 e5              mov    %rsp,%rbp
  722584: 41 57                 push   %r15
  722586: 41 56                 push   %r14
  722588: 41 55                 push   %r13
  72258a: 41 54                 push   %r12
  72258c: 49 89 d5              mov    %rdx,%r13
  72258f: 53                    push   %rbx
  722590: 48 89 fb              mov    %rdi,%rbx
  722593: bf 90 00 00 00        mov    $0x90,%edi
  722598: 49 89 cf              mov    %rcx,%r15
  72259b: 41 89 f6              mov    %esi,%r14d
  72259e: 48 83 ec 28           sub    $0x28,%rsp
  7225a2: 44 89 45 bc           mov    %r8d,-0x44(%rbp)
  7225a6: e8 e5 0a 61 00        callq  d33090 <_Znwm> 
  7225ab: 4c 89 ee              mov    %r13,%rsi
  7225ae: 48 89 c7              mov    %rax,%rdi
  7225b1: 49 89 c4              mov    %rax,%r12
  7225b4: e8 17 0a 00 00        callq  722fd0 <_ZN6webrtc20OveruseFrameDetectorC1EPNS_25CpuOveruseMetricsObserverE>
  7225b9: bf b8 0f 00 00        mov    $0xfb8,%edi                                                                                                                                
  7225be: 4c 89 65 c8           mov    %r12,-0x38(%rbp)
  7225c2: e8 c9 0a 61 00        callq  d33090 <_Znwm> 
  7225c7: 44 8b 45 bc           mov    -0x44(%rbp),%r8d
  7225cb: 48 89 c7              mov    %rax,%rdi
  7225ce: 4c 89 f9              mov    %r15,%rcx
  7225d1: 4c 89 ea              mov    %r13,%rdx
  7225d4: 44 89 f6              mov    %r14d,%esi
  7225d7: 49 89 c4              mov    %rax,%r12
  7225da: 45 89 c1              mov    %r8d,%r9d
  7225dd: 4c 8d 45 c8           lea    -0x38(%rbp),%r8
  7225e1: e8 3a 3f 00 00        callq  726520 <_ZN6webrtc18VideoStreamEncoderC1EjPNS_26VideoStreamEncoderObserverERKNS_26VideoStreamEncoderSettingsESt10unique_ptrINS_20OveruseFra
  7225e6: 48 8b 7d c8           mov    -0x38(%rbp),%rdi
  7225ea: 48 85 ff              test   %rdi,%rdi
  7225ed: 74 06                 je     7225f5 <_ZN6webrtc24CreateVideoStreamEncoderEjPNS_26VideoStreamEncoderObserverERKNS_26VideoStreamEncoderSettingsENS_18VideoEncoderConfig11C

it's part of libb.so's objdump:

0000000000722580 <_ZN6webrtc24CreateVideoStreamEncoderEjPNS_26VideoStreamEncoderObserverERKNS_26VideoStreamEncoderSettingsENS_18VideoEncoderConfig11ContentTypeE>:
  722580: 55                    push   %rbp
  722581: 48 89 e5              mov    %rsp,%rbp
  722584: 41 57                 push   %r15
  722586: 41 56                 push   %r14
  722588: 41 55                 push   %r13
  72258a: 41 54                 push   %r12
  72258c: 49 89 d5              mov    %rdx,%r13
  72258f: 53                    push   %rbx
  722590: 48 89 fb              mov    %rdi,%rbx
  722593: bf 90 00 00 00        mov    $0x90,%edi
  722598: 49 89 cf              mov    %rcx,%r15
  72259b: 41 89 f6              mov    %esi,%r14d
  72259e: 48 83 ec 28           sub    $0x28,%rsp
  7225a2: 44 89 45 bc           mov    %r8d,-0x44(%rbp)
  7225a6: e8 e5 0a 61 00        callq  d33090 <_Znwm> 
  7225ab: 4c 89 ee              mov    %r13,%rsi
  7225ae: 48 89 c7              mov    %rax,%rdi
  7225b1: 49 89 c4              mov    %rax,%r12
  7225b4: e8 17 0a 00 00        callq  722fd0 <_ZN6webrtc20OveruseFrameDetectorC1EPNS_25CpuOveruseMetricsObserverE>
  7225b9: bf c0 0f 00 00        mov    $0xfc0,%edi                                                                                                                                
  7225be: 4c 89 65 c8           mov    %r12,-0x38(%rbp)
  7225c2: e8 c9 0a 61 00        callq  d33090 <_Znwm> 
  7225c7: 44 8b 45 bc           mov    -0x44(%rbp),%r8d
  7225cb: 48 89 c7              mov    %rax,%rdi
  7225ce: 4c 89 f9              mov    %r15,%rcx
  7225d1: 4c 89 ea              mov    %r13,%rdx
  7225d4: 44 89 f6              mov    %r14d,%esi
  7225d7: 49 89 c4              mov    %rax,%r12
  7225da: 45 89 c1              mov    %r8d,%r9d
  7225dd: 4c 8d 45 c8           lea    -0x38(%rbp),%r8
  7225e1: e8 3a 3f 00 00        callq  726520 <_ZN6webrtc18VideoStreamEncoderC1EjPNS_26VideoStreamEncoderObserverERKNS_26VideoStreamEncoderSettingsESt10unique_ptrINS_20OveruseFra
  7225e6: 48 8b 7d c8           mov    -0x38(%rbp),%rdi
  7225ea: 48 85 ff              test   %rdi,%rdi
  7225ed: 74 06                 je     7225f5 <_ZN6webrtc24CreateVideoStreamEncoderEjPNS_26VideoStreamEncoderObserverERKNS_26VideoStreamEncoderSettingsENS_18VideoEncoderConfig11C.

Any help will be appreciateed!

Cat Tom
  • 26
  • 2

0 Answers0