/* * selectortramps.mac * OCMethodTrace * * https://github.com/omxcodec/OCMethodTrace.git * * Copyright (C) 2018 Michael Chen * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifdef __x86_64__ #define PRELOAD(x,f) movq x@GOTPCREL(%rip), %r10; #define LABEL_ADDR(x,f) %r10 #define LABEL_VALUE(x,f) (%r10) #define INIT_PIC(f) #define END_PIC(f) #elif __i386__ #define PRELOAD(x,f) leal x-L0## f ##$pb(%ebx), %eax; #define LABEL_ADDR(x,f) %eax #define LABEL_VALUE(x,f) (%eax) #define INIT_PIC(x) \ push %ebx; \ call L0## x ##$pb; \ L0## x ##$pb:; \ pop %ebx; #define END_PIC(x) pop %ebx #endif