gccrs: Introduce CStr language item

gcc/rust/ChangeLog:
	* util/rust-lang-item.h (LangItem::Kind): New CSTR kind.
	* util/rust-lang-item.cc (LangItem::lang_items): Ditto.
	* backend/rust-compile-type.cc (visit(TyTy::ReferenceType)): Add specific record
	type for CStr.
	* typecheck/rust-tyty.h (ReferenceType): Add function definition for is_dyn_cstr_type.
	* typecheck/rust-tyty.cc (ReferenceType::is_dyn_object): Update to include
	is_dyn_cstr_type.
	(ReferenceType::is_dyn_cstr_type): Add implementation to check whether the
	ReferenceType is of type CStr.
	* typecheck/rust-hir-type-check-base.cc(resolve_literal): Update C_STRING case to
	resolve to the CStr language item instead.

gcc/testsuite/ChangeLog:
	* rust/execute/torture/c_string.rs: Add CStr language item definition.
	* rust/compile/c_string_null_byte_check.rs: Ditto.
	* rust/execute/torture/c_string_ensure_null_term.rs: New test.

Signed-Off-By: Yap Zhi Heng <yapzhhg@gmail.com>
9 files changed