platform_bionic/libdl/libdl_static.cpp
Elliott Hughes 915c5fb9f6 libdl.a: make dlerror() always report an error.
Seems only logical, given that all the other calls fail.

(Only thing that's weird about this is that calling dlerror() usually
clears the error until you do something else that causes an error, but
that doesn't seem worth the bookkeeping?)

Bug: https://github.com/android-ndk/ndk/issues/965
Test: static unit tests still pass
Change-Id: I5e5401e148c5857f1dbab9c5a7f4a6fc43d8d626
2019-04-22 08:43:57 -07:00

49 lines
1.2 KiB
C++

/*
* Copyright (C) 2007 The Android Open Source Project
*
* 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.
*/
#include <dlfcn.h>
#include <link.h>
#include <stdlib.h>
void* dlopen(const char* /*filename*/, int /*flag*/) {
return nullptr;
}
char* dlerror() {
return const_cast<char*>("libdl.a is a stub --- use libdl.so instead");
}
void* dlsym(void* /*handle*/, const char* /*symbol*/) {
return nullptr;
}
void* dlvsym(void* /*handle*/, const char* /*symbol*/, const char* /*version*/) {
return nullptr;
}
int dladdr(const void* /*addr*/, Dl_info* /*info*/) {
return 0;
}
int dlclose(void* /*handle*/) {
return -1;
}
#if defined(__arm__)
_Unwind_Ptr dl_unwind_find_exidx(_Unwind_Ptr /*pc*/, int* /*pcount*/) {
return 0;
}
#endif